学习笔记:0408091011121314-I/O 输出解析 记忆 链 代理 | 豆包MarsCode AI刷题

82 阅读3分钟

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,接收代理计划、执行任务、使用工具