2.1 大模型的Agent潜力¶
学习目标¶
- 了解大模型的复杂任务规划能力
- 了解大模型的工具调用能力
- 了解大模型的反思和评估能力
对大模型多任务能力的最初步实践是基于提示词的,单纯使用提示词已经可以完成相当一部分复杂子任务,可以将多个这样的提示词步骤组合起来,用于完成复杂任务。
一、复杂任务规划¶
gantt
title 北京-张家界国庆旅行计划 (2025.10.1-10.7)
dateFormat YYYY-MM-DD
axisFormat %m-%d
section 交通
机票预订 :done, 2025-09-20, 3d
机场接送预约 :crit, 2025-09-25, 2d
北京-张家界航班 :active, 2025-10-01, 1d
张家界-北京返程 :active, 2025-10-07, 1d
section 住宿
酒店比价 :done, 2025-09-18, 4d
武陵源区预订 :crit, 2025-09-22, 2d
天门山附近住宿 :crit, 2025-09-24, 1d
section 行程
天门山国家公园 :active, 2025-10-02, 1d
张家界大峡谷 :active, 2025-10-03, 1d
黄龙洞游览 :active, 2025-10-04, 1d
袁家界-杨家界 :active, 2025-10-05, 1d
金鞭溪徒步 :active, 2025-10-06, 1d
section 准备
天气预报查询 :2025-09-28, 2d
登山装备采购 :2025-09-26, 3d
电子票证准备 :crit, 2025-09-30, 1d
可以在这个网址直接看甘特图:Online FlowChart & Diagrams Editor - Mermaid Live Editor

二、调用工具¶
可以直接使用大模型在提示词的引导下调用工具
主文件
import json
import ollama
def callModel(prompt):
response = ollama.chat(
model='qwen2.5:7b',
messages=[{'role': 'user', 'content': prompt}]
)
print(response['message']['content'])
return response['message']['content']
def checkTools(query):
prompt = ("""你是一位可靠的个人助理,现在为你提供【工具集】,根据【用户问题】判断是否需要使用其中的工具,并按照【指定格式】输出。
【工具集】
[getTrainSchedule]
getTrainSchedule的作用是根据指定的日期、起点城市名称和终点城市名称,查询列车班次
【指定格式】
{"是否需要调用【工具集】中的工具":"是",
"需要调用的工具名称":"getTrainSchedule",
"调用工具需要的参数":{"queryDate":"10月12日","start":"上海","end":"北京"}}
【用户问题】
""" + query)
toolCall = callModel(prompt)
return toolCall
def callTools(toolCall):
with open('tools.py', 'r', encoding='utf-8') as f:
content = f.read()
argsStr = ",".join(str(key)+'="'+toolCall["调用工具需要的参数"][key]+'"' for key in toolCall["调用工具需要的参数"])
print(argsStr)
content+="\ntoolRes="+str(toolCall["需要调用的工具名称"])+"("+argsStr+")"
print(content)
exec(content)
toolResult = locals()["toolRes"]
return toolResult
def getAnswer(query):
toolCall = json.loads(checkTools(query))
print("checkTools results:*********************************")
print(toolCall)
if toolCall["是否需要调用【工具集】中的工具"] == "是":
toolRes = callTools(toolCall)
print("callTools results:*********************************")
print(toolRes)
prompt = "你是一位可靠的个人助理,用户的问题是:"+query+"。 查询工具得到的结果是:"+toolRes+"。 根据这些信息,给出合理的回复。"
finalResult = callModel(prompt)
else:
prompt = "你是一位可靠的个人助理,用户的问题是:" + query + "。 根据这些信息,给出合理的回复。"
finalResult = callModel(prompt)
return finalResult
if __name__ == '__main__':
query = "我要在本周六到北京旅行,帮我规划一下行程,要求尽可能快捷舒适。"
result = getAnswer(query)
print(result)
工具文件
#查询可购买的火车票
def getTrainSchedule(queryDate,start,end):
"""根据指定的日期、起点城市名称和终点城市名称,查询列车班次"""
print("获取列车时刻表")
result = [["D81","12:24","14:30","北京西站","540"],["K4427","15:38","21:30","北京站","220"]]
resultStr = "您查询的在 "+queryDate+" 这一天从 "+start+" 到 "+end+" 的列车共有 "+str(len(result))+"班:\n"
for res in result:
resultStr+=res[0]+" 次列车:发车时间为: "+res[1]+" 到站时间为: "+res[2]+" 发车站为: "+res[3]+" 票价为: "+res[4]+"\n"
return resultStr
判定调用工具的结果
{'是否需要调用【工具集】中的工具': '是', '需要调用的工具名称': 'getTrainSchedule', '调用工具需要的参数': {'queryDate': '10月12日', 'start': '上海', 'end': '北京'}}
运行结果

三、反思与评估¶
你是一位社会问题专家,针对下面这份【对中秋节送月饼礼盒的看法】发表自己的意见,该看法是否全面?哪些方面可以改进?
【对中秋节送月饼礼盒的看法】
🌕 传统与现实的碰撞
情感纽带的作用:送月饼礼盒是中秋节的“标配”,尤其对爷爷奶奶那辈人来说,收到礼盒就像收到一份“我在乎你”的信号。虽然我觉得直接视频通话更实在,但不得不承认,拆礼盒时他们的笑容是真的开心。
同学间的微妙社交:班里有人会带进口月饼分给大家,包装闪得像奢侈品。虽然味道差不多,但莫名觉得“贵的就是高级”——这大概就是广告洗脑吧(笑)。
📦 吐槽点与反思
过度包装太浪费:拆开五层纸盒才见到四块月饼,环保课上学的“减量生活”瞬间破功。
甜到齁的陷阱:爸妈总说“传统月饼糖油超标”,但外婆非要塞给我吃,最后只能偷偷喂给小区流浪狗(对不起狗狗!)。
💡 我们这代的改良建议
轻量化礼盒:用再生纸做包装,附赠种子贺卡(种出来是桂花苗多酷啊!)。
口味革命:为什么不能出螺蛳粉月饼?年轻人可能更想收到奶茶味月饼,至少比五仁月饼有话题性!
总结:月饼礼盒像一场跨越年代的对话,我们既要尊重传统,也该勇敢加入Z世代的小叛逆~
(P.S. 如果明年能收到偶像联名月饼,我愿意连续一个月不喝奶茶!🤫)
