介绍
总结一下调用通义千问大模型的各种方式
注意
大语言模型和各类框架迭代飞快,再看本文时,部分代码可能已经过时了
本文所用到的 python 包 版本 dashscope 1.20.3 langchain 0.2.12 langchain-community 0.2.11 langchain-openai 0.1.21 openai 1.40.3
准备工作
申请 API KEY
申请通义千问的 API KEY:https://dashscope.console.aliyun.com/
配置环境变量
在项目中创建一个 .env
文件,保存程序运行时所需的环境变量:
(或者你用其他方式保存环境变量也行)
# 把通义千问的 API KEY 放这里
DASHSCOPE_API_KEY="sk-xxxx"
程序运行时,使用 dotenv.load_dotenv()
从 .env
文件中加载环境变量
pip install python-dotenv
import os
import dotenv
# 从文件中加载运行程序所需的环境变量
dotenv.load_dotenv(".env")
print(os.getenv("DASHSCOPE_API_KEY"))
调用通义千问大模型
使用 DashScope SDK
通义千问是阿里云研发的大语言模型;灵积是阿里云推出的模型服务平台,DashScope 是灵积的英文名
使用 DashScope SDK 调用通义千问模型,示例:
pip install dashscope
import os
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Message
import dotenv
dotenv.load_dotenv(".env")
response = Generation.call(
model="qwen-turbo",
api_key=os.environ["DASHSCOPE_API_KEY"],
messages=[
Message(role="system", content="你是一个 ai 助手"),
Message(role="user", content="你好,请问你是谁?")
]
)
print(response.output.text)
使用 langchain(chat_model)
langchain 是著名的开源 LLM 应用开发框架,集成了通义千问模型
使用 langchain 调用通义千问,示例:
pip install langchain
pip install langchain_community
pip install dashscope
from langchain_community.chat_models import ChatTongyi
import dotenv
dotenv.load_dotenv(".env")
model = ChatTongyi(model="qwen-turbo")
response = model.invoke("你好,请问你是谁?")
print(response.content)
使用 langchain(llm)
pip install langchain
pip install langchain_community
pip install dashscope
from langchain_community.llms import Tongyi
import dotenv
dotenv.load_dotenv(".env")
model = Tongyi(model="qwen-turbo")
response = model.invoke("你好,请问你是谁?")
print(response)
langchain_community
的 chat_models
和 llms
这两个模块有什么区别吗?
LLM 模块通常用于单论对话,ChatModel 模块通常用于多轮对话,目的不一样
但,有可能它们调用的通义千问的底层模型是同一个?如果真是同一个,用起来其实没什么什么差别?
看具体实现吧,我猜的,我也不知道
使用 OpenAI SDK
通义千问兼容 OpenAI 的 API,可以使用 OpenAI SDK 调用通义千问模型,示例:
pip install openai
import os
import dotenv
from openai import OpenAI
dotenv.load_dotenv(".env")
# 创建客户端,用于与远程大模型服务的通信,调用通义千问模型
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-turbo",
messages=[
{"role": "system", "content": "你是一个 ai 助手"},
{"role": "user", "content": "你好,请问你是谁?"}
]
)
print(completion.choices[0].message.content)
使用 langchain + OpenAI SDK
langchain 集成了 OpenAI,而通义千问兼容 OpenAI 的 API,所以...
有必要这么曲折吗...
pip install langchain
pip install langchain_openai
import os
from langchain_openai import ChatOpenAI
import dotenv
dotenv.load_dotenv(".env")
model = ChatOpenAI(
model="qwen-turbo",
openai_api_key=os.environ["DASHSCOPE_API_KEY"],
openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = model.invoke("你好,请问你是谁?")
print(response.content)