langgraph简单Demo(使用langserve实现外部调用)
前言
这个示例是研究如何使用langserve实现外部调用
接入大模型参考文章:接入阿里云百炼
1、安装依赖
pip install langserve fastapi uvicorn
pip install sse_starlette
2、代码实现
from fastapi import FastAPI
from langchain_core.messages import HumanMessage, AIMessage
from langchain_openai import ChatOpenAI
from langserve import add_routes
from langchain_core.runnables import RunnableLambda
from langgraph.graph import StateGraph, END
import osfrom openai import BaseModel# 初始化模型(这个地方不知道怎么配置的参考我的上一篇文章:https://blog.csdn.net/qq_33247435/article/details/146216842
model = ChatOpenAI(model="deepseek-r1",openai_api_key=os.environ["BAILIAN_API_KEY"],openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1",streaming=False # 禁用流式传输
)# 定义链式处理流程
def create_chain():def assistant_node(state: dict):last_message = state["messages"][-1]response = model.invoke([AIMessage(content="你是一个友好的助手"),last_message])return {"messages": [AIMessage(content=response.content)]}workflow = StateGraph(dict)workflow.add_node("assistant", assistant_node)workflow.set_entry_point("assistant")workflow.add_edge("assistant", END)return workflow.compile()# 创建FastAPI应用
app = FastAPI(title="LangChain Server",version="1.0",
)# 定义输入模型
class ChatRequest(BaseModel):messages: list# 修改路由配置
add_routes(app,RunnableLambda(create_chain().invoke),path="/chat",input_type=ChatRequest, # 使用自定义输入模型
)# 修改运行示例部分(调试用)
if __name__ == "__main__":import uvicornprint("测试输入格式:", ChatRequest(messages=[{"content": "测试"}]).model_dump()) # 添加调试输出uvicorn.run(app, host="0.0.0.0", port=8000)
3、效果
启动项目之后就可以直接访问接口文档
文档地址:http://localhost:8000/docs
文档效果:

请求参数:
{"input": {"messages": [{"content": "你好,推荐一本科幻小说","type": "human" }]}
}
响应结果如下:
{"output": {"messages": [{"content": "你好!如果你喜欢结合哲学思考与独特叙事结构的科幻作品,推荐特德·姜(Ted Chiang)的短篇小说集《你一生的故事》(*Stories of Your Life and Others*)。这部作品以语言学与物理学为切入点,探讨了时间、自由意志与人类认知的边界,尤其是标题篇《你一生的故事》将外星人“七肢桶”的非线性语言与主角的命运交织,呈现了宿命论与选择的深刻主题。文字细腻且逻辑严谨,曾被改编为电影《降临》,但原著对时间本质的探讨更为深邃。如果你偏好硬核科幻与人文哲思的结合,这本书会非常值得一读!","additional_kwargs": {},"response_metadata": {},"type": "ai","name": null,"id": null,"example": false,"tool_calls": [],"invalid_tool_calls": [],"usage_metadata": null}]},"metadata": {"run_id": "72297980-1b46-4667-ab37-a460ef9f389b","feedback_tokens": []}
}
调用效果如图:

相关文章:
langgraph简单Demo(使用langserve实现外部调用)
前言 这个示例是研究如何使用langserve实现外部调用 接入大模型参考文章:接入阿里云百炼 1、安装依赖 pip install langserve fastapi uvicorn pip install sse_starlette 2、代码实现 from fastapi import FastAPI from langchain_core.messages import HumanM…...
【C#高阶编程】—单例模式详解
C# 单例模式 单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式常用于需要全局唯一对象的场景,比如配置文件管理、日志记录、数据库连接池等。 单例模式的核心特点 私有构造函数:…...
折叠树报表
折叠树报表中包含了三种信息: 1.树组织信息-可展开、收拢 2.节点的统计信息(汇总求和) 3.每个节点对应的数据信息 一、准备数据 mysql8 数据库中存在两张表 org和store表。 org表和部分数据如下,其中orgname是组织的名称,codepath是完整的组织代码,seq是每个节点的顺序,可…...
Python个人学习笔记(16):模块(os)
四、os模块 主要用于文件夹处理 (一)文件夹相关 os.makedirs(‘dirname1/dirname2’) :创建文件夹目录,不能重复创建,用的多 代码: os.makedirs(a/b/c)结果: os.removedirs(‘dirname1’)&…...
虚拟地址空间(下)进程地址空间(上)
一.关于页表组成 1.权限(rwx) 作用:如1.让代码区变成只读的 2.写时拷贝的实现:子进程创建时其页表指向的父进程代码和数据权限都是只读的,子进程试图修改,触发错误,系统开始写时拷贝。 来源:…...
【数据集分享】青藏高原两次强震玛多地震和漾濞地震的震源过程
2021年5月21日,5小时内在青藏高原不同区域发生了漾濞6.4级和玛多7.4级强烈地震,表明印度板块和欧亚大陆板块的碰撞汇聚作用下青藏高原持续和频繁的 剧烈构造运动和地震活动。本研究利用地震记录和空间对地观测同震位移资料(InSAR)…...
jmeter环境搭建及使用
Meter 是一个开源的性能测试工具,用于测试静态和动态资源的性能。 1、安装 官网下载: 下载地址:Apache JMeter - Download Apache JMeter 网盘下载: 通过百度网盘分享的文件:apache-jmeter-5.6.3.rar 链接&#x…...
Python 鼠标轨迹算法 - 防止游戏检测
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
网络编程--服务器双客户端聊天
写一个服务器和客户端 运行服务器和2个客户端,实现聊天功能 客户端1和客户端2进行聊天,客户端1将聊天数据发送给服务器,服务器将聊天数据转发给客户端2 要求: 服务器使用 select 模型实现 ,客户端1使用 poll 模型实现…...
yum软件包乾坤大挪移(Yum Package Qiankun Great Migration)
yum软件包乾坤大挪移 背景 由于很多的生产环境是无法连接外网的,因此用yum或者dnf命令来安装软件包常常是一个比较麻烦的事情,原因是很多软件的依赖很复杂,如果要一个个下载、拷贝、再安装,这往往是一个非常繁琐冗杂的过程&…...
Java:读取中文,read方法
public static void main(String[] args) throws IOException {FileReader fr new FileReader("C:\\aaa\\a.txt");//字符流的底层也是一个字节一个字节读取的,遇到中文就一次读多个,GBK一次读两个,UTF-8一次读三个字节//idea默认U…...
[GHCTF 2025]真会布置栈吗?
题目是一个聊天室,我们先按照题目使用 /help Help: /help 显示此帮助信息 /msg [text] 在当前频道发送消息 /nick [name] 更改你的用户名 /list 列出可用的频道 /join [channel] 切换到不同的频道 /channel …...
集合的练习1-2
//练习1: import java.util.ArrayList;public class ArraylistTest1 {public static void main(String[] args){ArrayList<String> listnew ArrayList<>();//需求:定义一个集合,添加字符串,并进行遍历//遍历格式&…...
英语词性--数词
文章目录 数词概念数词分词基数词序数词 基数与序数词的区别基变序的规律 数词概念 数词(Numerals) 是英语中用于表示 数量(基数)或顺序(序数) 的词类,通常用于描述数字、计数、顺序等。 例如&…...
面试整理--一个报告生成的方案解析
最近又快到了年后找工作的时间,近期写点工作积累,供大家参考。 欢迎关注公主号【测试开发备忘录】,交流职场技巧和经验 首先从工作中一个报错来展开: Start directory is not importable: 错误信息 "Start directory is not importable…...
C#零基础入门篇(18. 文件操作指南)
## 一、文件操作基础 在C#中,文件操作主要通过System.IO命名空间中的类来实现,例如File、FileStream、FileInfo等。 ## 二、常用文件操作方法 ### (一)文件读取 1. **使用File.ReadAllText方法读取文件内容为字符串** …...
Linux 一步部署DHCP服务
#!/bin/bash #脚本作者和日期 #author: PEI #date: 20250319 #检查root权限 if [ "$USER" ! "root" ]; then echo "错误:非root用户,权限不足!" exit 0 fi #防火墙与高级权限 systemctl stop firewa…...
如何打造安全稳定的亚马逊采购测评自养号下单系统?
在当今的电商领域,亚马逊作为全球领先的在线购物平台,其商品种类繁多,用户基数庞大,成为了众多商家和消费者的首选。而对于一些需要进行商品测评或市场调研的用户来说,拥有一个稳定、安全的亚马逊账号体系显得尤为重要…...
【大模型学习】第二十四章 生成式人工智能(GAI)简介
目录 一、什么是生成式人工智能(GAI)? 二、核心技术原理 三、典型应用场景 四、技术特点与挑战 五、训练优化策略 六、关键性能指标(2025年基准) 七、技术演进方向: 一、什么是生成式…...
Pytorch中layernorm实现详解
平时我们在编写神经网络时,经常会用到layernorm这个函数来加快网络的收敛速度。那layernorm到底在哪个维度上进行归一化的呢? 一、问题描述 首先借用知乎上的一张图,原文写的也非常好,大家有空可以去阅读一下,链接放…...
YOLO11报错:AttributeError: module ‘torch‘ has no attribute ‘OutOfMemoryError‘
事情是这样的:前几天YOLO11的代码还是可以训练的,昨天训练了一天,今天换模型就报这个错。 AttributeError: module torch has no attribute OutOfMemoryError我查了一下:YOLO11官方代码issues里面也有人有同样的问题,…...
基于java的ssm+JSP+MYSQL的高校四六级报名管理系统(含LW+PPT+源码+系统演示视频+安装说明)
作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…...
Starrocks 命令 Alter table DISTRIBUTED 重分布数据的实现
背景 在前文Starrocks 写入报错 primary key memory usage exceeds the limit中,可以通过ALTER TABLE xxxx DISTRIBUTED BY HASH(xx) BUCKETS 50;来改变数据的分布状态,具体的执行过程是怎么样的呢? 分析 首先对应的g4文件中为 alterTableStatement &…...
ns3使用入门_基于ns3.44_Part2_配置模块参数的Configuration 和Attributes
前言 事实上ns3的官方手册很全,相关书籍也是有的,官网先贴在这里: ns-3 | a discrete-event network simulator for internet systemsa discrete-event network simulator for internet systemshttps://www.nsnam.org/相关的脚本介绍也都有一些: ns-3.35_wifi-he-networ…...
性能测试过程实时监控分析
性能监控 前言一、查看性能测试结果的3大方式1、GUI界面报告插件2、命令行运行 html报告3、后端监听器接入仪表盘 二、influxDB grafana jmeter测试监控大屏1、原理:2、linux环境中influxDB 安装和配置3、jmerer后端监听器连接influxDB4、linux环境总grafana环境搭…...
Springboot List集合的校验方式
pom.xml 引入 <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.2.0.Final</version></dependency><dependency><groupId>org.springframework.b…...
C程序设计(第五版)及其参考解答,附pdf
通过网盘分享的文件:谭浩强C语言设计 链接: https://pan.baidu.com/s/1U927Col0XtWlF9TsFviApg?pwdeddw 提取码: eddw 谭浩强教授的《C程序设计》是C语言学习领域的经典教材,其内容深入浅出,适合不同层次的学习者。 一、教材版本与特点 最…...
【蓝桥杯速成】| 7.01背包练习生
题目一:分割等和子集 问题描述 416. 分割等和子集 - 力扣(LeetCode) 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:…...
杰理科技JL703N双模蓝牙芯片—云信
杰理科技JL703N芯片运算能力、接收灵敏度、发射功率、音频性能等指标均处于行业一流水平,能满足多场景的应用需求,具有以下明显优势: 一、高性能双核浮点CPU,算力十足 JL703N芯片搭载了32位高性能双核CPU,主频高达32…...
Rust + 时序数据库 TDengine:打造高性能时序数据处理利器
引言:为什么选择 TDengine 与 Rust? TDengine 是一款专为物联网、车联网、工业互联网等时序数据场景优化设计的开源时序数据库,支持高并发写入、高效查询及流式计算,通过“一个数据采集点一张表”与“超级表”的概念显著提升性能…...
