hello agents 学习记录

张开发
2026/4/14 16:31:55 15 分钟阅读

分享文章

hello agents 学习记录
hello agents 学习本博客仅为个人学习记录与理解分享非商业用途所有代码与文档版权归原项目及其贡献者所有。github开源项目一、FirstAgentTest——简化版ReAct1.执行路线2.重点理解2.1 system_prompt系统提示词非常重要输出格式要求与后续编写代码判断是否调用工具调用哪个工具是否结束任务息息相关AGENT_SYSTEM_PROMPT 你是一个智能旅行助手。你的任务是分析用户的请求并使用可用工具一步步地解决问题。# 可用工具:-get_weather(city: str):查询指定城市的实时天气。 -get_attraction(city: str, weather: str):根据城市和天气搜索推荐的旅游景点。# 输出格式要求:你的每次回复必须严格遵循以下格式包含一对Thought和Action Thought:[你的思考过程和下一步计划]Action:[你要执行的具体行动]Action的格式必须是以下之一1. 调用工具function_name(arg_namearg_value)2. 结束任务Finish[最终答案]# 重要提示:- 每次只输出一对Thought-Action - Action必须在同一行不要换行 - 当收集到足够信息可以回答用户问题时必须使用 Action: Finish[最终答案]格式结束 请开始吧2.2 user_prompt用户提示词要按步骤写清晰第一步先查询天气第二步再根据天气推荐景点user_prompt你好请帮我查询一下今天武汉的天气然后根据天气推荐一个合适的旅游景点。2.3 prompt_historyprompt_history是使用列表.append()方法来实现短期记忆的后续长期记忆要通过向量数据库 嵌入检索RAG实现注意prompt_history要存大模型自己的输出这里有Thought指导后面怎么做还要存工具输出结果逐步完善答案。prompt_history.append(llm_output)# 添加大模型输出的结果prompt_history.append(observation_str)# 添加工具调用的返回结果2.4 输出结果从Thought可以看出LLM将目标拆解为可执行的子任务的规划过程。要存llm_outputThought、Action原因qwen3-max说的“ReAct 论文显示加入 Thought 可使复杂任务准确率提升 30%”。每次循环只会执行一个工具两个的工具使用有一个顺序关系。二、赛博小镇1.配置问题在config.py文件中加上下面两行加载所有配置这样LLM仅限当前config.py文件、qdrant、neo4j都可以读到.env文件中的配置。配置文件importos from typingimportOptional加上这两行 from dotenvimportload_dotenv load_dotenv()class Settings:应用配置代码中有两处是无参调用LLM的self.llm HelloAgentsLLM()因为HelloAgentsLLM源码无参情况下会优先查询是否属于openai的模型不会优先读取环境变量LLM_API_KEY等而我的openai环境变量配置的还是百炼平台的直接删或者修改都要重启电脑才生效所以决定直接将所有无参调用的地方都改为有参的。需要修改的有两处batch_generator.py和agents.py初始化代码处。batch_generator.pyfromconfigimportsettingsclassNPCBatchGenerator:批量生成NPC对话的生成器 核心思路: 一次LLM调用生成所有NPC的对话,降低API成本和延迟 def__init__(self):初始化批量生成器print( 正在初始化批量对话生成器...)try:# 显式传参llm_config{model:settings.LLM_MODEL_ID,api_key:settings.LLM_API_KEY,base_url:settings.LLM_BASE_URL,provider:modelscope}self.llmHelloAgentsLLM(**llm_config)agents.pyfromconfigimportsettingsclassNPCAgentManager:NPC Agent管理器 - 支持记忆功能def__init__(self):初始化所有NPC Agentprint( 正在初始化NPC Agent系统...)try:llm_config{model:settings.LLM_MODEL_ID,api_key:settings.LLM_API_KEY,base_url:settings.LLM_BASE_URL,provider:modelscope}self.llmHelloAgentsLLM(**llm_config)嵌入模型选择local先要安装sentence-transformers工具库再在python中下载all-MiniLM-L6-v2嵌入模型。pipinstallsentence-transformersmodelSentenceTransformer(sentence-transformers/all-MiniLM-L6-v2)注意main.py启动时all-MiniLM-L6-v2嵌入模型会自动向https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2/resolve/main/processor_config.json发送检查更新要把它关了在.env文件中添加TRANSFORMERS_OFFLINE1配置。TRANSFORMERS_OFFLINE1# 跳过所有网络检查步骤添加此行EMBED_MODEL_TYPElocal解决完这些配置就可以正常运行了02:56:49 - 对话开始: 王五-玩家 02:56:49 -02:56:49 - 玩家消息: 你好啊 02:56:49 - 当前好感度:50.0/100(友好)Batches:100%|███████████████████████████████████████████████████████████████████████████████████████████████|1/1[00:0000:00,3.81it/s]02:56:50 - 检索到0条相关记忆 02:56:50 - 正在生成回复... 02:57:14 - 王五回复: 你好呀我刚把最后一处细节打磨好来这儿小憩。这杯咖啡的香气刚好要一起坐会儿吗 02:57:14 - 正在分析好感度变化... 02:57:28 - 好感度变化:50.0-52.0(2.0)02:57:28 - 原因: 友好问候 02:57:28 - 情感: positive 对话已保存到王五的记忆中 02:57:28 - 对话已保存到王五的记忆中 02:57:28 -02:57:28 - ✅ 对话完成2.执行路线

更多文章