菜单

szdxdxdx
szdxdxdx
发布于 2024-08-11 / 98 阅读
0
0

调用通义千问大模型的各种方式

介绍

总结一下调用通义千问大模型的各种方式

注意

大语言模型和各类框架迭代飞快,再看本文时,部分代码可能已经过时了

本文所用到的 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_communitychat_modelsllms 这两个模块有什么区别吗?

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)

评论