当前位置:   article > 正文

【2024最全最细Langchain教程-5 】Langchain模型I/O之输出解析器_from langchain_openai import chatopenai

from langchain_openai import chatopenai

【2024最全最细Langchain教程-4 】Langchain模型I/O之提示Prompt(二)-CSDN博客

输出解析器的最简单应用

        之前我们提过,我们使用的聊天包装器输出的是一个AIMessage类型的消息体,而我们在组建chain链的时候,往往需要输出str或者其他格式的输出,因此这里会引入输出解析器的概念,它的作用把langchain的输出进行格式转化,我们来看代码,这里StrOutputParser就是我们引入的输出解析器,它把原来的AIMessage输出成为str :

  1. import langchain
  2. import os
  3. from langchain_openai import ChatOpenAI
  4. from langchain_core.prompts import ChatPromptTemplate
  5. from langchain_core.output_parsers import StrOutputParser
  6. api_key = os.getenv("OPENAI_API_KEY")
  7. llm = ChatOpenAI(
  8. openai_api_key=api_key,
  9. temperature=0.9,
  10. base_url = "https://apejhvxcd.cloud.sealos.io/v1"
  11. )
  12. prompt = ChatPromptTemplate.from_messages([
  13. ("system", "你是一个中国历史专家."),
  14. ("user", "{input}")
  15. ])
  16. output_parser = StrOutputParser()
  17. chain = prompt | llm | output_parser
  18. response = chain.invoke({"input":"简单介绍一下宋朝的历史"})
  19. print(response,type(response))

           我们来看这个链调用的输出结果的类型,是一个str:

模型绑定和控制

        你可以对llm模型进行函数绑定和控制,这里我们给一个最简单的示例,在上面代码的基础上给llm模型加一个绑定和限制,如下图:

  1. llm2 = ChatOpenAI(
  2. openai_api_key=api_key,
  3. temperature=0.9,
  4. base_url = "https://apejhvxcd.cloud.sealos.io/v1"
  5. )
  6. prompt2 = ChatPromptTemplate.from_messages([
  7. ("system", "你是一个中国历史专家."),
  8. ("user", "{input}")
  9. ])
  10. output_parser = StrOutputParser()
  11. chain2 = prompt2 | llm2.bind(stop=["\n"]) | output_parser
  12. chain2.invoke({"input":"简单介绍一下宋朝的历史"})

        这个绑定的意思是说,当模型的输出遇到换行符(“\n”)就停止不再输出了,加上这个之后我们可以看到同样的问题,模型返回的结果被处理截短了:

       

        llm模型还可以绑定函数,以对模型进行更复杂的处理,这个我们后面在更复杂的案例里再介绍。

另外一种链的生成方式

        这两节课上,我们已经看到了一种langchain最推荐、也是最简单的组链方式,我们来看另外一种组链的方式,这种方式也可以实现,但是不太推荐,这是因为这种组链方式如果在复杂链和复合链的构造时,修改起来会比较麻烦,但是我们也需要知道有其他的组链方式:

  1. import langchain
  2. import os
  3. from langchain_openai import ChatOpenAI
  4. from langchain.chains import LLMChain
  5. from langchain.prompts import PromptTemplate
  6. from langchain_core.prompts import ChatPromptTemplate
  7. from langchain_core.output_parsers import StrOutputParser
  8. api_key = os.getenv("OPENAI_API_KEY")
  9. llm = ChatOpenAI(
  10. openai_api_key=api_key,
  11. temperature=0.9,
  12. base_url = "https://apejhvxcd.cloud.sealos.io/v1"
  13. )
  14. prompt = (
  15. ChatPromptTemplate.from_template("Tell me a joke about {topic}")
  16. + ", make it funny"
  17. + "\n\n and in {language}"
  18. # PromptTemplate.from_template("Tell me a joke about {topic}")
  19. # + ", make it funny"
  20. # + "\n\n and in {language}"
  21. )
  22. # print(prompt)
  23. output_parser = StrOutputParser()
  24. #这种chain的组装方式是老的方式,不太推荐,推荐用新的 | 组装chain
  25. chain = LLMChain(llm=llm, prompt=prompt, output_parser=output_parser)
  26. print(chain.invoke({"topic":"历史", "language":"chinese"}))

项目git地址:https://github.com/jerry1900/jupyter

项目视频地址:【2024最全最细】langchain之输出解析器_哔哩哔哩_bilibili

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/336695
推荐阅读
相关标签
  

闽ICP备14008679号