懵懵懂懂一下就学到了这里
agent相当于就是让AI拥有了‘调用了工具的能力’但严谨来说不是AI调用,是程序调用后把结果又发给ai。
我的理解是,一个循环,提示词;
要求输出AI输出思考过程,
- 是否需要调用工具,
- 可以调用哪些工具。
- 是否结束输出最终结果。
如果不能结束,就是带着上下文继续循环直到AI觉得可以结束了,或者达到了循环的上限。
这里来看一下代码吧
我们首先介绍一下@tool装饰器
@tool装饰器
1.定义一个工具函数
1 | # 2. 定义工具1:依旧是祖传的查询天气 |
注意看哦你需要加上description描述,这样AI才知道这个工具是干什么的,不过新版本也可以这样写在函数里面加个 描述信息
1 | # 3. 定义工具2:查询楠瓜的信息(你写的内容) |
2.康康函数长啥样
使用的是 args_schema.model_json_schema() 函数,名字有长
1 | print(get_weather.args_schema.model_json_schema()) |
输出的结果
1 | {'description': '获取城市天气的函数', |
使用Agent
构建Agent
1 |
|
调用Agent
注意和平时调用LLM不同的是,他不能直接invoke(‘ 你好呀我是楠瓜 ‘)也就是说不能直接传递一个字符串给他,他需要一个字典。
1 | # 6. 调用 Agent |
res返回的是一个<class ‘dict’>字典类型,
- 只有 2 个键:
messages和system_prompt messages是列表,存了完整对话流程- 最后一条就是 AI 的最终回答
- 取答案用:
res["messages"][-1].content
用这个代码,你就能清清楚楚看到每一步:
1 | for i, msg in enumerate(res["messages"]): |