使用Yuan2.0和LangChain创建智能对话助手

51 阅读2分钟

引言

在人工智能领域中,Yuan2.0是由IEIT系统开发的新一代大型语言模型。Yuan2.0在Yuan1.0的基础上,利用高质量的预训练数据和指令微调数据集,增强了模型对语义、数学、推理、代码及知识等方面的理解能力。本文将指导您如何利用LangChain中的ChatYuan2与Yuan2.0 API进行集成,以创建智能对话助手。

主要内容

环境安装

为了使用Yuan2.0的API,我们需要确保在Python环境中安装了OpenAI兼容的客户端。你可以通过以下命令安装:

%pip install --upgrade --quiet openai

导入必要模块

安装完毕后,我们需要在Python脚本中导入所需模块:

from langchain_community.chat_models import ChatYuan2
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage

设置API服务器

在使用Yuan2.0之前,请确保已经设置了OpenAI兼容的API服务器。您可以选择本地部署服务器。在这种情况下,确保yuan2_api_base设置正确:

yuan2_api_key = "your_api_key"
yuan2_api_base = "http://127.0.0.1:8001/v1"

注意: 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问的稳定性。

初始化ChatYuan2模型

接下来,我们初始化ChatYuan2模型:

chat = ChatYuan2(
    yuan2_api_base="http://127.0.0.1:8001/v1",  # 使用API代理服务提高访问稳定性
    temperature=1.0,
    model_name="yuan2",
    max_retries=3,
    streaming=False,
)

基本使用

我们可以通过系统和用户消息来调用模型:

messages = [
    SystemMessage(content="你是一个人工智能助手。"),
    HumanMessage(content="你好,你是谁?"),
]

print(chat.invoke(messages))

使用流式输出

为了实现连续交互,我们可以启用流式输出:

from langchain_core.callbacks import StreamingStdOutCallbackHandler

chat = ChatYuan2(
    yuan2_api_base="http://127.0.0.1:8001/v1",  # 使用API代理服务提高访问稳定性
    temperature=1.0,
    model_name="yuan2",
    max_retries=3,
    streaming=True,
    callbacks=[StreamingStdOutCallbackHandler()],
)
messages = [
    SystemMessage(content="你是个旅游小助手。"),
    HumanMessage(content="给我介绍一下北京有哪些好玩的。"),
]

chat.invoke(messages)

代码示例

我们展示了如何通过异步调用与模板结合使用Model:

import asyncio
from langchain_core.prompts.chat import ChatPromptTemplate

async def ainvoke_with_prompt_template():
    chat = ChatYuan2(
        yuan2_api_base="http://127.0.0.1:8001/v1",  # 使用API代理服务提高访问稳定性
        temperature=1.0,
        model_name="yuan2",
        max_retries=3,
    )
    prompt = ChatPromptTemplate.from_messages(
        [
            ("system", "你是一个诗人,擅长写诗。"),
            ("human", "给我写首诗,主题是{theme}。"),
        ]
    )
    chain = prompt | chat
    result = await chain.ainvoke({"theme": "明月"})
    print(f"type(result): {type(result)}; {result}")

asyncio.run(ainvoke_with_prompt_template())

常见问题和解决方案

  1. 网络连接问题: Yuan2.0 API服务器可能由于网络限制而无法访问。建议使用API代理服务。

  2. 模型初始化失败: 检查API端点和API密钥是否正确配置。

总结和进一步学习资源

利用Yuan2.0和LangChain,我们能够快速构建复杂的对话系统。要深入学习,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---