Chain的基础使用1

📅 2026/6/30 11:29:54
Chain的基础使用1
目录1.介绍2.示例3.StrOutputParser字符串输出解析器4.JsonOutputParser和多模型执行链5.自定义函数加入链1.介绍上一环的输出作为下一环的输入2.示例from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder from langchain_community.chat_models import ChatTongyi chat_prompt_template ChatPromptTemplate.from_messages( [ (system, 你是一个边塞诗人可以作诗。), MessagesPlaceholder(history), (human, 请再来一首唐诗), ] ) history_data [ (human, 你来写一个唐诗), (ai, 床前明月光疑是地上霜举头望明月低头思故乡), (human, 好诗再来一个), (ai, 锄禾日当午汗滴禾下锄谁知盘中餐粒粒皆辛苦), ] model ChatTongyi(modelqwen-max) chain chat_prompt_template | model response chain.invoke({history: history_data}) print(response.content)流式输出response chain.stream({history: history_data}) for chunk in response: print(chunk.content, end, flushTrue)3.StrOutputParser字符串输出解析器from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder from langchain_community.chat_models import ChatTongyi from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate model ChatTongyi(modelqwen-max) prompt PromptTemplate.from_template(我邻居姓:{lastname},刚生了{gender},请起名,简单回答) chain prompt | model | StrOutputParser() | model response chain.invoke({lastname: 王, gender: 男}) print(response.content)也可chain prompt | model | StrOutputParser() | model | StrOutputParser() response : str chain.invoke({lastname: 王, gender: 男}) print(response)4.JsonOutputParser和多模型执行链from langchain_community.chat_models import ChatTongyi from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from langchain_core.messages import AIMessage from langchain_core.output_parsers import JsonOutputParser # 定义输出解析器 str_parser StrOutputParser() json_parser JsonOutputParser() # 定义模型 model ChatTongyi(modelqwen-max) # 定义提示模板 first_prompt PromptTemplate.from_template(我邻居姓:{lastname},刚生了{gender},请起名,并封装为JSON格式返回给我。要求key为name,value就是你起的名,严格遵守格式要求) second_prompt PromptTemplate.from_template(姓名{name},简单解析一下) # 定义链 chain_chain first_prompt | model | json_parser| second_prompt | model | str_parser res chain_chain.invoke({lastname: 王, gender: 男}) print(res)此处第一个模型输出的格式为AIMessage需要提前在第一个模板处告诉第一个模型将输出结果规范化以便第二个模型去输入key的value当然规范化后的输出AIMessage需要经过JsonOutputParser()转化为字典输入第二个模板5.自定义函数加入链from langchain_community.chat_models import ChatTongyi from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from langchain_core.messages import AIMessage from langchain_core.output_parsers import JsonOutputParser from langchain_core.runnables import RunnableLambda str_parser StrOutputParser() my_func RunnableLambda(lambda ai_msg :{name: ai_msg.content}) model ChatTongyi(modelqwen-max) first_prompt PromptTemplate.from_template( 我的邻居姓氏是{last_name},刚生了{gender},帮我给他起个名,仅告知姓名。 ) second_prompt PromptTemplate.from_template( 姓名{name},简单解析一下 ) chain first_prompt | model | my_func | second_prompt | model | str_parser res : str chain.invoke(input{last_name: 王, gender: 男}) print(res)