【连载】零基础跟我学做AI Agent(第3课:用LangChain开发一个做题Agent)

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在这里

今天讲第3课,用一个做Agent的经典框架------LangChain,开发一个做数学题的Agent。

LangChain是非常强大的大语言模型应用开发库,做Agent很方便,可能大家也很熟悉,但LangChain最大的问题是版本和版本之间变化太快,尤其现在终于到了1.0.0,与旧版比较,类库结构已面目全非,可能还要重新熟悉。本课是针对LangChian最新版V1.0.0的。

一、学习目标

大模型不太擅长数字计算,DeepSeek训练时用强化学习,对这个方面做了很多改进,但总归做数学题,文本生成的方法不如数学工具来的准确,所以要用Agent外挂工具。本讲的内容是一个做数字题的Agent,只有20多行程序,但会涉及大模型、工具调用、Function-Calling、ReAct Agent等知识,是一个完整的Agent案例。

二、源代码

先上代码,再解释。如在手机上不易查看,请到 的chapter-x-0base下载代码和操作步骤。

xml 复制代码
# agent_langchain.py
import os
from langchain.agents import create_agent
os.environ['OPENAI_API_BASE'] = 'http://localhost:11434/v1'
os.environ["OPENAI_API_KEY"] = "EMPTY"
def calculator(expression: str) -> str:
"""用于执行数学计算。输入是一个数学表达式,例如:'15 ** 2 + 28 / 4'"""
try:
print("\n======调用到工具=======\n")
print(expression)
print("\n======================\n")
return str(eval(expression))
except Exception as e:
return f"计算错误: {e}"
agent = create_agent(
model="openai:qwen3", tools=[calculator],
system_prompt="你是一个用于执行数学计算的Agent",
)
response = agent.invoke(
{"messages": [{"role": "user", "content": "计算15的平方加上32除以4的结果是多少?"}]}
)
print(response)

1、calculator是个工具方法,传入表达式,给出结果。那么问题来了,这个方法什么时候调,表达式参数是谁给的?这就与Agent有关,在建Agent的时候,这个方法作为Tools之一被设置进去,那用户通过Agent向大模型提问时,这些工具信息也作为提示词的一部分传给大模型,这样大模型就会根据情况生成一个调用calculator的命令文本,顺便把参数也生成。

2、问题是大模型不能直接调工具方法,不然大家都让他调,他也受不了,他用的方法是远程指挥,生成的文本回传给Agent,Agent调他自己的方法。这个过程就叫Function-Calling。

三、运行

1、环境安装

ini 复制代码
# 创建虚拟环境
conda create -n part03 python=3.13 -y
# 激活虚拟环境
conda activate part03
# 安装依赖库
pip install langchain==1.0.0 langchain-community==1.0.0a1 langchain-openai==1.0.0 -i https://pypi.mirrors.ustc.edu.cn/simple

2、测试

复制代码
python agent_langchain.py

问题是:计算15的平方加上32除以4的结果是多少?大模型没有直接算,而是生成一个调用工具的文本,把参数也给生成,然后交给Agent调calculator算,算完再给大模型总结一下。

3、结果

从结果上看,模型生成的文本命中了工具,工具计算后再由模型总结。

未完待续!

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在这里

相关推荐
KaneLogger1 天前
【翻译】打造 Agent Skills 的最佳实践
agent·ai编程·claude
QCY1 天前
「完全理解」1 分钟实现自己的 Coding Agent
前端·agent·claude
mCell1 天前
从零构建一个 Mini Claude Code:面向初学者的 Agent 开发实战指南
typescript·agent·claude
雮尘1 天前
如何在非 Claude IDE (TARE、 Cursor、Antigravity 等)下使用 Agent Skills
前端·agent·ai编程
会写代码的柯基犬1 天前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
叁两1 天前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
是一碗螺丝粉1 天前
LangChain 链(Chains)完全指南:从线性流程到智能路由
前端·langchain·aigc
前端付豪1 天前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
百越平民1 天前
Spring AI 实战:从零构建类 OpenClaw 的自主 Agent
agent
Kayshen1 天前
我用纯前端逆向了 Figma 的二进制文件格式,实现了 .fig 文件的完整解析和导入
前端·agent·ai编程