《借助 LangChain 与 LLM Agent 加速生成式 AI 应用开发-张文举.pdf》由会员分享,可在线阅读,更多相关《借助 LangChain 与 LLM Agent 加速生成式 AI 应用开发-张文举.pdf(37页珍藏版)》请在三个皮匠报告上搜索。
1、借助 LangChain 与 LLM Agent加速生成式 AI 应用开发张文举 博士亚马逊云科技/资深培训讲师内容提要1.LLM-based Agents 概念组成与发展现状概念组成与发展现状2.Agent 开发框架与 LangChain 开发示例3.如何使用 Agents for Amazon Bedrock 构建生成式AI应用什么是 LLM-based Agentshttps:/arxiv.org/pdf/2309.07864.pdfThe Rise and Potential of Large Language Model Based Agents:A Survey LLM-based
2、 Agents 组成模块Agent=LLM+memory+planning skills+tool useCPU OSLLM Powered Autonomous Agents,https:/lilianweng.github.io/posts/2023-06-23-agent/Agent 规划能力植根于Prompt EngineeringLLMZero-shotInstructionand/or QuestionOutputLLMFew-shotInstructionand/orQuestionExamples(input+output)OutputLLMChain of Thoughts(
3、CoT)Instructionand/orQuestionReasoning example+CoTindicatorOutputLLMReasoning&Acting(ReAct)Instructionand/orQuestionToolsDescriptionOutputLLMActionAgentResponseSelfConsistencyLLMInstructionand/orQuestionReasoning example+CoTindicatorReasoning OutputsAggregationOutputAgent 大脑-规划能力https:/arxiv.org/pdf
4、/2309.07864.pdfThe Rise and Potential of Large Language Model Based Agents:A Survey GPT Agents 功能发展Native RAG+AssistantTools+AgentsLLM-based Agents 应用场景Tool UseFunction CallingCode InterpreterAPI CallAssistantsRAGFramework-specific AgentAutoGPTMetaGPTAutoGenXAgentDomain-specific AgentSupply Chain Ag
5、entRetail AgentInvest Banker AgentCustomer Service AgentSoftware Factory AgentGeneral AgentTechnologyApplicationBusiness ProductLLM-based Agents 应用类型https:/arxiv.org/pdf/2309.07864.pdfThe Rise and Potential of Large Language Model Based Agents:A Survey LLM-based Agents 发展趋势提示词工程ReActSingle-AgentMult
6、i-AgentAgent OS1.AutoGPT2.ChatGPT+FC+code interpreter3.LangChain Agents4.Transformer Agents5.AgentGPT1.BabyAGI2.CAMEL3.MetaGPT4.XAgent5.GPTeam6.AutoGenLLM-based Agents 限制与挑战1 稳定性3 安全可信性2 扩展性4 成本与价值编写Prompt需要新的技能,不同LLMs也有不同的方言和表现,虽然可以用LLM来写Prompt实现Auto-prompt,但仍需开发人力。LLM输出内容和格式稳定性仍有待提高,函数调用FC与知识库问答RA
7、G等功能准确性也待提高,目前约在80-95%之间。LLM存在幻觉和非合规内容生成风险,以及利用Jailbreak漏洞产生有害信息,不同LLM或者同一个LLM不同版本之间有功能差异,导致额外逻辑风险。Prompt在Agent应用中通常都非常冗长,消耗token数量比较大,特别是Multi-Agent模式中这个问题更是凸显。内容提要1.LLM-based Agents 概念组成与发展现状2.Agent 开发框架与开发框架与 LangChain 开发开发示例示例3.如何使用 Agents for Amazon Bedrock 构建生成式AI应用LangChain&Agent 开发框架 文本生成 摘要
8、生成 对话聊天机器人 代码实现/理解 Retrieval augmented generation(RAG)Reasoning agents各种生成式AI应用!AutoGPTLangChainAutoGenXAgentLangChain 核心模块14LangChain tools 工具与Agent进行交互的函数和接口可以是 APIs,loaders,functions,other chains or agents工具可以依赖或不依赖 LLM举例:Math tool uses an LLM for answering math questionsLangChain 支持第三方工具集成#List
9、of tool namestool_names=.#Load toolstools=load_tools(tool_names,llm)LangChain tools:IntegrationsLangChain toolkits 工具集 预定义工具集合完成特定任务目标 一些工具集列表:GitHub toolkit:Interact with Github repository JSON toolkit:Interacting with JSON or dict objects PowerBI toolkit:Interact with Power BI dataset PythonREPL:W
10、rite and execute Python code SparkSQL toolkit:General inquiries about Spark SQL Jira toolkit:Interact with Jira instanceReAct LangChain Agents 理论基础ReAct:协同推理和动作,推理轨迹有助于模型推导、跟踪和更新行动计划,并处理异常情况,而动作使其能够与外部来源,如知识库或环境,进行接口交互并收集额外信息。推理(Reasoning):创建、推导、跟踪和更新行动计划动作(Acting):与外部交互,如函数、工具、知识库和环境等ReAct=Reason+A
11、ctLangChain Agents 特性负责决策规划需要执行的动作并相应执行之(Planning&Reasoning)Agents 可以使用丰富的预定义工具或自定义工具 工具描述信息要传递给Agent,供Agent 推理(Reasoning)工具组合要传递给Agent,供Agent 调用(Acting)Agents 运行时(runtimes)负责调用Agent 和执行工具使用等各种动作常用运行时 AgentExecutorLangChain Agents 常见类型Conversational:Optimized for conversationReAct:Implements ReAct L
12、ogicPlan-and-execute:Break task into planning actions and executing.OpenAI-based:Specialized for OpenAI functionsSelf-ask with Search:Predict answers for overall responseStructured Tool Chat:Specialized for multi-input toolsXML Agents:Reasoning XMLCustom Agent:Define the agent skills manuallyAgent 例
13、子:对话 agent专门为对话优化(比如对话上下文记忆)而不是像其他Agent类别主要使用工具如果需要通常利用 ReAct 选择和使用工具倾向于使用对话模型 chat models#Use a memory to preserve historyhistory=ConversationBufferMemory(memory_key=“chat_history”)#Define the agent agent=initialize_agents(tools,llm,agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,memory=history)La
14、ngChain Agents 定义示例#Define the API wrapper for DuckDuckGo searchduckduckgo_search_run=DuckDuckGoSearchRun()#Define the DuckDuckGo tool using a description and the function to retrieve results from DuckDuckGo searchduckduckgo_general_tool=Tool(name=DuckDuckGoSearch General,func=duckduckgo_search_run.
15、run,description=Useful for when you need to search online about facts and events or retrieve news)#Define the API wrapper for Wikipediawikipedia=WikipediaAPIWrapper()#Define the Wikipedia tool with a description and the function to retrieve results from Wikipediawikipedia_tool=Tool(name=wikipedia,fu
16、nc=wikipedia.run,description=Useful for when you need to answer general questions about people,places,companies,facts,historical events,or other subjects.Input should be a search query.,)tools=current_date,PythonREPLTool(),duckduckgo_general_tool,wikipedia_toolagent=initialize_agent(tools,llm,agent=
17、AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True)工具定义工具集定义工具定义Agent 定义LangChain Agents 运行示例prompt=claude(Whats the square root of 2.5 million?)agent.run(prompt)prompt=claude(Which Amazon cloud service provides access to foundation models?)agent.run(prompt)内容提要1.LLM-based Agents 概念组成与发展现状2.Agent 开发
18、框架与 LangChain 开发示例3.如何使用如何使用 Agents for Amazon Bedrock 构建生成式构建生成式AI应用应用只需要几下点击即可让生成式AI来完成某些任务Agents forAmazon Amazon Agents for Amazon Bedrock 核心抽象AgentLLMKnowledge BaseAction Group110.n0.nLambda 函数API SchemaData SourceEmbeddingModelVector DB11111Agents for Amazon Bedrock 基本原理 预处理 包含对用户输入的上下文的补全以及预制
19、意图判定A:无效输入(有毒有害输入)B:试图刺探Agent实现原理或破解Agent输入.C:不属于Agent能力范围请求D:属于Agent能力范围请求E:是对Agent反问客户获取新的信息的输入 流程拆解 LLM自行思考并分布调用action group,包括同Bedrock 知识库联动 状态检查 检验是否获取足够信息来输出结果(FINISH),也可以可以询问客户获取新的输入信息(ASK_USER)Agents:编排基础模型、数据源、软件应用程序与用户之间的交互行为选择您的基础模型提供基础的agent的指示选择知识召回的数据源开发特定的Lamba函数1234理解和拆分任务 安全访问和检索公司数
20、据自主调用 API 来实现行动提供完全托管的基础架构支持仅需几次单击,生成式 AI 应用程序即可完成任务Amazon Bedrock Agents 您可以在 Bedrock 中创建代理并将其集成到自己的应用程序中。要开始使用代理,请打开 Bedrock 控制台,在左侧导航面板中选择代代理理,然后选择创建代理。打开 Bedrock 控制台,选择 agent假设您是一家创新投资基金的技术人员,想要提供一款生成式人工智能应用程序,帮助投资机构自动执行投研和投资组合管理等任务。配置开发Agent控制台Amazon Bedrock Agents提供代理详细信息,包括代理名称、描述(可选)、是否允许代理请
21、求其他用户输入,以及允许代理访问其他所需服务(例如 Amazon S3 和 Lambda)的IAM服务角色。从 Bedrock 中选择适合适用案例的基础模型提供 agent 详细信息从 Bedrock 中选择适合使用案例的根基模型。在此处,您可以用自然语言向代理提供说明。此说明告诉代理应该执行的任务以及应承担的角色。例如:“您是负责创建投资组合的投资基金管理者,您会根据市场进行投资研究”配置与开发Agent 模型与指令Amazon Bedrock Agents操作是代理可以通过对公司系统进行 API 调用来自动执行的任务。在操作组中定义一组操作。在操作中,您可以提供 API 架构,用于为组中的
22、所有操作定义 API。您还必须提供 Lambda 函数来表示每个 API 的业务逻辑。例如,我们定义名为 PortfolioCreatorActionGroup 的操作组,该组通过获取投研信息根据一系列公司和行业用户要求创建投资组合。请务必在操作组描述中获取此类信息。模型将使用这些信息来推理和决定执行何种操作。操作组的业务逻辑操作组的业务逻辑添加操作组添加操作组配置与开发Agent 使用工具Amazon Bedrock Agents在控制台测试Agent部署与测试Agent创建与部署Agent样例代码您可以自己配置与测试https:/ Group知识库AgentLLM运行调试与追踪规划Plan
23、ning输入输出对话问答内容总结LLM-based Agent进一步提升LLM能力和减轻幻觉等风险,并逐渐形成开发框架,可以加速生成式AI应用开发。LangChain Agents是比较流行的一种Agent实现,可以实现Single-Agent应用开发,也方便集成各种工具以及实现RAG等多种应用模式。Agents for Amazon Bedrock是亚马逊云科技推出的无代码/低代码生成式AI服务,内置RAG和工具使用支持,可以让业务人员/技术人员快速实现Agent应用开发测试和上线。LLM-based Agent仍然是一个新兴领域,存在稳定性、安全可信性、扩展性和成本与价值等多方面限制,研究
24、和工程化都在快速发展中。参考资料LLM Powered Autonomous Agents,https:/lilianweng.github.io/posts/2023-06-23-agent/LangChain,https:/ Bedrock Samples,https:/ Bedrock Workshop,https:/ Next-Gen LLM Applications via Multi-Agent Conversation,https:/arxiv.org/pdf/2308.08155.pdfReAct:Synergizing reasoning and acting in language models,https:/arxiv.org/pdf/2210.03629.pdfA Survey on Large Language Model based Autonomous Agents,https:/arxiv.org/pdf/2308.11432.pdfThe Rise and Potential of Large Language Model Based Agents:A Survey,https:/arxiv.org/pdf/2309.07864.pdf