Agent开发_1
第一个简单的Angent了解基本语法
话不多说,直接上代码
from langchain.agents import create_agent
from langchain_ollama import ChatOllama
from langchain_core.tools import tool
@tool(description="天气查询")
def get_weather() -> str:
return "可能是晴天☀️"
agent = create_agent(
model=ChatOllama(
model="qwen3:4b"
), # 智能体的大脑
tools=[get_weather], # 工具集
system_prompt="你是一个聊天助手,可以回答用户问题.", # 提示词
)
res = agent.invoke(
{
"messages": [
{"role": "user", "content": "明天北京天气怎么样"},
]
}
)
for msg in res["messages"]:
print(type(msg).__name__, msg.content)

其中,有几个关键点要注意
当前agent的“大脑”模型要支持使用工具集才可以
用户提问后,ai会思考一下使用哪个工具集,然后调用工具获得输出,输出后,ai结合输出内容进行回答问题
流式输出
看代码
from langchain.agents import create_agent
from langchain_ollama import ChatOllama
from langchain_core.tools import tool
@tool(description="天气查询, 传入城市名称,获取气温")
def get_weather(city_name: str) -> str:
return f"明天{city_name}是晴天☀️,最好53摄氏度 最低13摄氏度"
@tool(description="穿衣推荐,传入温度返回衣服种类")
def get_clothes_recommend(temperature: int) -> str:
if 0 <= temperature < 10:
return "毛衣"
elif 10 <= temperature < 20:
return "秋衣"
elif 20 <= temperature < 30:
return "T恤"
else:
return "啥也别穿了"
agent = create_agent(
model=ChatOllama(
model="qwen3:4b"
), # 智能体的大脑
tools=[get_weather, get_clothes_recommend], # 工具集
system_prompt="你是一个聊天助手,可以回答用户问题.", # 提示词
)
for chunk in agent.stream(
{
"messages": [
{"role": "user", "content": "明天北京天气怎么样,我要怎么穿衣服啊,我可不想感冒"},
]
},
stream_mode="values" # 这里设置流式输出
):
latest_message = chunk['messages'][-1]
if latest_message.content:
print(type(latest_message).__name__, latest_message.content)
try:
if latest_message.tool_calls:
print(f"工具调用: {[tc['name'] for tc in latest_message.tool_calls]}")
except AttributeError as e:
pass

不得不说,ai还是很会调用工具的,即使是带参数的函数工具也可以
后面哪个异常捕获是因为并不是每一步输出都有调用工具,所以没有这一条就捕获异常不做处理
EeAct框架
核心思想就是:
思考 -> 行动 -> 观察 -> 循环直到合适的结果
使用from langchain.agents import create_agent创建的agent已经是这个框架下的了,其是支持并行调用的

浙公网安备 33010602011771号