AI Agent在做什么的?它是什么?
Agent = LLM(语言模型) + Tools(使用工具) + Memory(记忆) + Plan(规划) MCP(Model Context Protocol)核心是AI模型与外部资源的通信协议,重点偏向于工具的使用; Agent则更倾向于自主决策,然后通过MCP来实现工具的使用;
例如,当AI Agent需要读取企业数据库时,MCP会处理身份验证、数据格式转换和传输加密,而Agent专注于判断何时需要该数据及如何利用结果[10][19]。
模型如何使用工具:(跟我个人猜想的一样)
py
System Prompt =
"如果你需要使用工具,你需要把使用工具的指令放在<tool>和</tool>之间,在用完工具后你会得到输出,输出会放在<output>和</output>之间"(告诉他如何使用工具)
+ "现在你可以使用如下工具:1. 查询天气的函数为temperature(location, time);2. 计算平方根sqrt(location, time)"(告诉他都有什么工具)
User Prompt = "告诉我北京的天气如何,然后计算根号3是多少,然后告诉我这两者的联系"
LLM如何感知结果?
- 让Agent服务去调用,且这一步对用户隐藏;
- 并且给出结果
json
"messages": [
{
"role": "system",
"content": "如果你需要使用工具,你需要把使用工具的指令放在<tool>和</tool>之间,在用完工具后你会得到输出,输出会放在<output>和</output>之间,现在你可以使用如下工具:1. 查询天气的函数为temperature(location, time);2. 计算平方根sqrt(location, time)"
},
{
"role": "user",
"content": "告诉我北京的天气如何,然后计算根号3是多少,然后告诉我这两者的联系"
},
{
"role": "assistant",
"content": "好的,我将先查询北京的天气,然后计算根号3。请稍等片刻。\n\n<tool>temperature(\"北京\", \"现在\")</tool>\n<tool>sqrt(3)</tool>"
},
{
"role": "system",
"content": "<tool>temperature(\"北京\", \"现在\")</tool><output>30摄氏度</output>\n<tool>sqrt(3)</tool><output>1.732</output>"
},
],
json
"content":"现在北京的天气是30摄氏度,而根号3的值是1.732。\n\n这两者之间的联系可以从多个角度来理解:\n\n1. **温度与数值**:30摄氏度是一个温度的数值,而1.732是一个数学常数。它们都是数值,但代表不同的物理量。\n\n2. **数学与现实世界**:根号3在数学中常常出现在几何学和三角函数中,而30摄氏度则是我们日常生活中感知的温度。温度影响我们的生活,而数学则帮助我们描述和理解这种影响。\n\n3. **变化与稳定**:天气是动态变化的,可能随时改变,而根号3是一个固定的数学常数,不会改变。\n\n综上所述,虽然这两者在性质上相差甚远,但它们都在各自的领域中扮演着重要的角色。"
我们可以再加上这一行:
json
{
"role": "user",
"content": "现在,你按照以上格式,去查询上海的天气, 并且告诉我结果"
}
结果如下:
json
{
"role": "assistant",
"content": 好的,我将查询上海的天气。请稍等片刻。\n\n<tool>temperature(\"上海\", \"现在\")</tool>"
}
Memory
短期记忆(工作记忆): 主要通过上下文来完成; 机制就是:将一些信息当作Prompt输入; 缺点:容易发生上下文丢失
长期记忆:也是类似于人脑,检索之后,输入相关的内容;
- 存储内容:长期记忆通常包括:
- 关键事实:如用户的职业、兴趣或重要事件。
- 用户偏好:如喜欢简洁回答或偏好某种语言风格。
- 历史决策:如用户过去的选项选择或行为模式。
- 实现方式:长期记忆依赖以下技术:
- 知识图谱(Knowledge Graphs):以结构化形式存储实体及其关系,便于复杂推理。
- 向量数据库(Vector Databases):如Pinecone,用于存储文本的嵌入表示,支持快速语义检索。