本文较长,建议点赞收藏。更多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大模型应用开发学习视频及资料,在这里。