Other
LangChain中的代理通常由以下几个关键组件组成:
- 代理执行器:代理执行器负责调用代理、获取操作和操作输入、使用生成的输入调用操作引用的工具、获取工具的输出,然后将所有信息传回进入代理以获取它应该采取的下一步行动。
- 提示模板:提示模板负责获取用户输入和之前的步骤,并构建发送到语言模型的提示。
- 语言模型:语言模型接受使用输入和操作历史记录的提示,并决定下一步做什么。
- 输出解析器:输出解析器获取语言模型的输出,并将其解析为下一个动作或最终答案。
LangChain代理的使用场景非常广泛,包括但不限于以下几个方面:
- 网络搜索:代理可以整合多种搜索引擎,如Google搜索、Baidu搜索等,根据用户输入自动选择合适的搜索引擎进行搜索,并返回相关结果。
- 嵌入式搜索:在特定的应用程序或平台中嵌入搜索功能,通过代理实现智能化的搜索和推荐。
- API集成:代理可以集成各种API,如数据库查询API、计算器API等,实现数据的自动化处理和计算。
- 自定义工具:开发者可以编写自定义工具,集成内部API、文档系统和许多其他应用程序,进一步扩展代理的功能。
04模型I/O:输入模型、调用模型、解析输出
08输出解析
输入提示
学习笔记:LangChain组件、提示工程|豆包MarsCode AI刷题
调用模型
大预言模型LLM
聊天模型Chat Model
文本嵌入模型Embedding Model:输入并返回浮点列表,存入向量数据库。
输出解析
输出解析器有三种方法:get_format_instructions ; parse ; parse_with_prompt。
希望返回结构化信息,比如:
[description:鲜花的说明文本 reason:解释一下为何要这样写上面的文案]
定义响应格式:response_schemas--from_response_schemas-->输出解析器output_parser--get_format_instructions()-->格式提示format_instructions
创建提示时,同prompt_template一起--PromptTemplate.from_template-->prompt(未实例化)--format-->prompt = input(实例化)
解析输出:parsed_output = output_parser.parse(output) #是一个字典
#通过输出解析器output_parser的parse方法
11 记忆
ConversationChain
ConversationBufferMemory
ConversationBufferWindowMemory
ConversationSummaryMemory
ConversationSummaryBufferMemory
使用时,同llm一同加入chain。
09 10 链
如果不适用chain : prompt PT model output ...分开,不简洁。
使用chain后:
llm_chain = LLMChain( llm=llm, prompt=PromptTemplate.from_template(template))
顺序链
路由链:
-
chain---->chain_map
-
路由模板:RT + 实例format ----> router_template --PT--> router_prompt(未实例化,同未实例化prompt一样,可直接入chain,形成router_chain) 【主要是提示用,用于判断进入哪一个chain】
-
构建默认链default_chain
-
多提示链:(由以下三个共同构成)
router_chain : 决定哪一个destination_chain被选中
default_chain : 默认chain
destination_chain : 可以是chain_map
12 13 14代理
ReAct框架 : 行动、观察、思考
agent llm tools可共同初始化代理
代理执行器AgentExecutor,接收代理计划、执行任务、使用工具