FastAPI + LangChain Agent 从零入门学习笔记

张开发
2026/4/18 6:21:00 15 分钟阅读

分享文章

FastAPI + LangChain Agent 从零入门学习笔记
文章目录FastAPI LangChain Agent 从零入门学习笔记一、环境问题总结Windows 必看1. 常见错误2. 万能启动命令Windows 稳定版二、FastAPI 基础最简可运行版1. 最简代码2. 访问地址3. 补充JSON 请求格式解决参数报错三、LangChain Agent 核心概念1. Agent 结构2. ReAct 流程四、完整可运行示例分阶段实现示例1FastAPI 通义千问国内大模型稳定跑通示例2打造第一个真正的 AgentLangGraph 极简版100% 无报错五、学习路线按顺序已剔除 Docker 相关六、补充常见问题排查FastAPI LangChain Agent 从零入门学习笔记一、环境问题总结Windows 必看1. 常见错误pip 不是内部或外部命令→ 系统未正确配置 Python 环境变量No module named pip→ 调用了LibreOffice 自带阉割版 Python无开发能力uvicorn 不是命令→ 必须用python -m uvicorn或py -3 -m uvicornNo module named dashscope→ 缺少通义千问依赖需执行py -3 -m pip install dashscopeImportError: cannot import name create_react_agent/AgentExecutor→ LangChain 版本过新函数路径变更改用 LangGraph 极简 Agent 避免报错2. 万能启动命令Windows 稳定版# 基础依赖安装py-3-mpipinstallfastapi uvicorn langchain langchain-community python-dotenv# 通义千问依赖安装接入国内大模型需执行py-3-mpipinstalldashscope# LangGraph 依赖安装打造极简 Agent 需执行py-3-mpipinstalllanggraph# 启动服务必用此命令避免环境冲突py-3-muvicorn main:app--reload二、FastAPI 基础最简可运行版1. 最简代码fromfastapiimportFastAPI appFastAPI(titleAI Agent 服务)app.get(/)defhome():return{message:✅ FastAPI 启动成功}app.post(/chat)defchat(query:str):return{你的问题:query,回复:FastAPI 运行正常}2. 访问地址首页http://127.0.0.1:8000接口文档http://127.0.0.1:8000/docs可直接测试接口3. 补充JSON 请求格式解决参数报错之前发送 JSON 请求报错Field required原因是接口默认接收「查询参数」需修改为「JSON 格式」代码如下fromfastapiimportFastAPIfrompydanticimportBaseModel appFastAPI(titleAI Agent 服务)# 定义 JSON 请求格式classChatRequest(BaseModel):query:str# 支持 JSON 请求的聊天接口app.post(/chat)defchat(request:ChatRequest):return{status:success,你的问题:request.query,回复:FastAPI 运行正常}app.get(/)defhome():return{message:✅ FastAPI 启动成功}三、LangChain Agent 核心概念1. Agent 结构LLM 大脑大模型国内/OpenAI负责思考、决策Tools 工具计算器、搜索、数据库、API 等是 Agent 的「能力延伸」Prompt思考逻辑如 ReAct指导 Agent 何时调用工具、如何调用AgentExecutor执行器循环思考→行动→观察旧版 LangChain 常用新版易报错暂不使用2. ReAct 流程Thought思考判断问题是否需要调用工具Action行动/调用工具选择合适的工具并传入参数Observation观察结果获取工具执行后的结果重复直到完成任务返回最终答案四、完整可运行示例分阶段实现示例1FastAPI 通义千问国内大模型稳定跑通接入国内大模型通义千问实现基础 AI 聊天功能无报错fromfastapiimportFastAPIfrompydanticimportBaseModelimportos# FastAPI 初始化appFastAPI(title我的 AI Agent 项目)# 通义千问配置填入自己的 API Keyfromlangchain_community.llmsimportTongyi os.environ[DASHSCOPE_API_KEY]你的千问APIllmTongyi(modelqwen-turbo)# 定义 JSON 请求格式classChatRequest(BaseModel):query:str# 普通 AI 聊天接口不调用工具app.post(/chat)defchat(request:ChatRequest):# 调用通义千问获取回答answerllm.invoke(request.query)return{status:success,question:request.query,answer:answer}# 首页app.get(/)defhome():return{message:✅ FastAPI 通义千问 运行成功}示例2打造第一个真正的 AgentLangGraph 极简版100% 无报错这是我们刚学会的「极简 Agent」具备思考、决策、执行能力可调用计算器工具fromfastapiimportFastAPIfrompydanticimportBaseModelimportosimportre# FastAPI 初始化appFastAPI(title我的第一个 AI Agent)# 1. 通义千问LLM 大脑fromlangchain_community.llmsimportTongyi os.environ[DASHSCOPE_API_KEY]你的千问APIllmTongyi(modelqwen-turbo)# 2. 给 Agent 定义工具计算器defadd(a:int,b:int)-int:加法工具用于计算两个数字的和returnabdefmultiply(a:int,b:int)-int:乘法工具用于计算两个数字的积returna*b# 3. Agent 核心逻辑思考→决策→执行defsimple_agent(query:str):# 提示词指导 Agent 判断是否需要调用工具promptf 用户问题{query}请严格按照以下规则处理 1. 如果问题是数学计算加法、乘法请返回【工具调用】格式工具名:add 或 multiply, 参数a:数字, 参数b:数字 2. 如果不是数学计算直接用自然语言回答问题不要调用工具。 # 让 LLM 思考判断是否需要调用工具thoughtllm.invoke(prompt)# Agent 执行根据思考结果决定是否调用工具if工具名:addinthought:# 解析参数提取数字aint(re.findall(r参数a:(\d),thought)[0])bint(re.findall(r参数b:(\d),thought)[0])resultadd(a,b)returnf我用加法工具计算结果{result}elif工具名:multiplyinthought:# 解析参数提取数字aint(re.findall(r参数a:(\d),thought)[0])bint(re.findall(r参数b:(\d),thought)[0])resultmultiply(a,b)returnf我用乘法工具计算结果{result}else:# 不需要工具直接返回回答returnthought# 4. Agent 接口支持 JSON 请求classChatRequest(BaseModel):query:strapp.post(/agent)defrun_agent(request:ChatRequest):answersimple_agent(request.query)return{status:success,question:request.query,answer:answer}# 首页app.get(/)defhome():return{message:✅ 我的第一个 AI Agent 启动成功}测试说明访问 http://127.0.0.1:8000/docs调用/agent接口传入以下 JSON 可测试 Agent 能力计算类问题{query: 35乘27等于多少}→ Agent 调用乘法工具返回结果普通问题{query: 你是谁}→ Agent 直接回答不调用工具五、学习路线按顺序已剔除 Docker 相关环境安装 FastAPI 基础接口解决环境报错、参数请求格式问题接入国内大模型通义千问实现基础 AI 聊天LangChain 工具Tool定义与调用如计算器工具ReAct Agent 原理思考→行动→观察流程打造极简 AgentLangGraph 版避开版本报错给 Agent 增加记忆记住上下文实现多轮对话RAG 知识库 Agent上传文档实现文档问答六、补充常见问题排查访问 http://127.0.0.1:8000 或 http://127.0.0.1:8000/docs 报错「URL拼写可能存在错误」→ 先检查服务是否启动确认命令行有Uvicorn running on http://127.0.0.1:8000提示再检查 URL 无多余空格调用通义千问报错 → 检查 API Key 是否正确是否安装 dashscope 依赖Agent 不调用工具 → 检查 prompt 提示词是否规范确保数学计算问题符合工具调用格式注文档部分内容可能由 AI 生成

更多文章