这里写自定义目录标题
- llm应用开发
- 什么是Agent?
- Agent1:工作流
- Agent2:自主Agent
- LLM如何拥有自主规划能力?
- Tool
- 参考:
llm应用开发
llm工程师需要具备以下能力:
[] 软件工程技能:将各个组件组装在一起
[] 算法能力:理解模型和工具的原理
[] 深入业务理解:理解业务目标更重要,对人工流程进行建模是重要技能
llm应用开发的关键要素:
1.面对llm的脆弱性:分而治之,将工作分解至更小的实验,逐个尝试
2.从小处着手,自下而上:从小处着手,越小越好,不断迭代。一个Prompt解决所有问题
3.
什么是Agent?
Agent1:工作流
1.增强:
- 检索
- tool
- memory
2.推理:
- ReAct
- 思考链CoT
- 思考树ToT
- 对任务进行拆分
3.Router(编排层):对输入进行分类,并分别调用不同的模型
4.并行:拆分后聚焦。
5.评估者-优化器:需要多轮搜索和分析才能收集到全面信息的复杂搜索任务。
Agent2:自主Agent
1.能力:自主规划并独立执行,利用环境反馈,在循环中调用工具。
2.开始:与用户沟通,获取明确地任务目标后自行规划并独立执行,
3.获取环境反馈:需要在每个步骤获取‘真实’结果,来评估进展
4.检查点或遇到障碍:在【checkpoint】检查点暂停并寻求人类反馈
5.终止:任务完成,或设置停止条件
6.防护测试:
LLM如何拥有自主规划能力?
1.动态与工具交互,根据实时反馈调整执行策略。
2.模型内外知识结合
3.基于预训练的策略生成模型,模拟与推理???
4.任务拆解与步骤规划能力
5.从自研语言中提取目标或需求
Tool
如何区分llm和tool的任务边界?
llm:语言理解、生成和推理任务
tool:当llm需要直接与system交互时。system有特定的input schema
创建tool的几个关键点:
tool需要有一个清晰明确的name和description
tool的功能尽量单一。
llm尽量不要绑定太多的tools
无论构件哪种agent,工具都是其中重要组成部分
一个好的工具定义通常包含示例用法、边界情况、输入格式要求,以及与其他工具的清晰差异。
参考:
[1] https://www.cnblogs.com/lusuo/p/18663007
[2] https://baoyu.io/translations/building-effective-agents
[3] https://mp.weixin.qq.com/s/tbcpCYZ5s_WGE7rOl22wQw