当前位置:   article > 正文

主流大模型的对话模型ChatModel实现_chattongyi

chattongyi

介绍

聊天模型是大语言模型(LLM)的一种封装。聊天模型不再局限于提供一个“文本输入,文本输出”的API能力,而是提供一个以“聊天消息”作为输入和输出的接口。

通过向聊天模型传递一个或多个消息,可以获取聊天完成的结果,响应也是一个消息。目前Langchain支持的消息类型有AIMessage、HumanMessage、SystemMessage和ChatMessage,其中ChatMessage可以接受一个Role参数,传递任意角色。大多数情况下,只需要处理HumanMessage、AIMessage和SystemMessage。

国内大模型的ChatModel实现

一、通义千问
  1. from langchain_community.chat_models import ChatTongyi
  2. from langchain_core.messages import HumanMessage
  3. # 创建通义聊天模型
  4. chat_tongyi = ChatTongyi()
  5. # 一次性返回
  6. res = chat_tongyi.invoke([HumanMessage(content="请给我讲个笑话吧!")])
  7. print(res)
  8. # 流式返回
  9. chat_tongyi = ChatTongyi(streaming=True)
  10. stream_res = chat_tongyi.stream([HumanMessage(content="请给我讲个笑话吧!")])
  11. try:
  12. for chunk in stream_res:
  13. print(chunk)
  14. except TypeError as e:
  15. print("")
二、文心一言
  1. from langchain_community.chat_models import QianfanChatEndpoint
  2. from langchain_core.messages import HumanMessage
  3. # 创建千帆聊天模型
  4. chat_qianfan = QianfanChatEndpoint()
  5. # 一次性返回
  6. res = chat_qianfan.invoke([HumanMessage(content="请给我讲个笑话吧!")])
  7. print(res.content)
  8. # 流式返回
  9. chat_qianfan = QianfanChatEndpoint(streaming=True)
  10. stream_res = chat_qianfan.stream([HumanMessage(content="请给我讲个笑话吧!")])
  11. try:
  12. for chunk in stream_res:
  13. print(chunk.content)
  14. except TypeError as e:
  15. print("")
三、ChatGLM
  1. from langchain_openai import ChatOpenAI
  2. # 导入消息
  3. from langchain.schema import (
  4. HumanMessage,
  5. SystemMessage,
  6. )
  7. # 初始化大语言模型
  8. llm = ChatOpenAI(
  9. model="glm-4",
  10. temperature=0.95,
  11. )
  12. # 创建系统消息和人类消息
  13. system_message = SystemMessage(content="""
  14. 你是一个家政机器人,你拥有完成主人提出的所有家政任务的能力,你熟悉主人家庭里面所有物品的方位,并会使用相关工具。
  15. 你已装配传感器、导航、机械手臂等执行任务所需要的所有必备部件。
  16. 你会接收一个主人指令,然后仔细分析,细化为具体步骤,最终完成用户指令。
  17. 你会在任务完成后,提示主人:主人,您还有什么吩咐?
  18. """)
  19. human_message = HumanMessage(content="请帮把客厅已损坏的吊灯更换为新的吊灯")
  20. # 调用大模型回答问题
  21. res = llm.invoke([system_message, human_message])
  22. print(res.content)
四、星火

虽然星火大模型的stream方式调用不会出错,但是目前不是流式返回,应该是还不支持。

  1. from langchain_community.chat_models import ChatSparkLLM
  2. from langchain_core.messages import HumanMessage
  3. # 创建星火聊天模型
  4. chat_spark = ChatSparkLLM()
  5. # 一次性返回
  6. res = chat_spark.invoke([HumanMessage(content="请给我讲个笑话吧!")])
  7. print(res.content)
  8. # 流式返回
  9. chat_spark = ChatSparkLLM(streaming=True)
  10. stream_res = chat_spark.stream([HumanMessage(content="请给我讲个笑话吧!")])
  11. try:
  12. for chunk in stream_res:
  13. print(chunk.content)
  14. except TypeError as e:
  15. print("")
五、百川
  1. from langchain_community.chat_models import ChatBaichuan
  2. from langchain_core.messages import HumanMessage
  3. # 创建百川聊天模型
  4. chat_baichuan = ChatBaichuan()
  5. # 一次性返回
  6. res = chat_baichuan.invoke([HumanMessage(content="请给我讲个笑话吧!")])
  7. print(res.content)
  8. # 流式返回
  9. chat_baichuan = ChatBaichuan(streaming=True)
  10. stream_res = chat_baichuan.stream([HumanMessage(content="请给我讲个笑话吧!")])
  11. try:
  12. for chunk in stream_res:
  13. print(chunk.content)
  14. except TypeError as e:
  15. print("")

使用聊天模板

以通义千问为例

  1. from langchain_community.chat_models import ChatTongyi
  2. from langchain_core.prompts import HumanMessagePromptTemplate, ChatPromptTemplate
  3. from langchain_core.prompts import SystemMessagePromptTemplate
  4. # 创建系统消息模板
  5. system_template = "你是一个翻译顾问,能将{input_language}翻译成{output_language}"
  6. system_message_prompt = SystemMessagePromptTemplate.from_template(system_template)
  7. # 创建人类消息模板
  8. human_template = "{input_text}"
  9. human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
  10. # 合并人类消息模板和系统消息模板
  11. chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
  12. # 创建通义聊天模型
  13. chat_tongyi = ChatTongyi()
  14. res = chat_tongyi.invoke(
  15. chat_prompt.format_prompt(input_language="中文", output_language="日语", input_text="我爱日本姑娘").to_messages())
  16. print(res.content)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/1009409
推荐阅读
相关标签
  

闽ICP备14008679号