在LangChain中使用百炼

本文主要介绍如何将阿里云百炼提供的模型集成到大模型应用开发框架LangChain中。

前提条件

聊天模型(Chat Model)

Python

OpenAI

只支持百炼的部分模型。完整列表请参考:OpenAI 兼容模式支持的模型列表。调用费用、输入输出上限等请参考:模型总览

使用前需要安装以下依赖:

pip install langchain_openai

模型调用:

from langchain_openai import ChatOpenAI
import os

chatLLM = ChatOpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    model="qwen-plus",
    # other params...
)
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "你是谁?"}]
response = chatLLM.invoke(messages)
print(response.json())

工具调用等进阶技巧请前往 LangChain 官方的 ChatOpenAI。完整的 API参考文档请前往 LangChain 官方的 ChatOpenAI API Reference

DashScope

支持百炼所有的文本生成模型,完整列表与调用费用请参考:模型总览。(也支持部署后的模型)

使用前需要安装以下依赖:

pip install langchain-community
pip install dashscope

模型调用:

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

chatLLM = ChatTongyi(
    model="qwen-max",
    streaming=True,
    # other params...
)
res = chatLLM.stream([HumanMessage(content="hi")], streaming=True)
for r in res:
    print("chat resp:", r.content)

多模态调用、工具调用等进阶技巧请前往 LangChain 官方的 ChatTongyi。完整的 API参考文档请前往 LangChain 官方的 ChatTongyi API Reference

JavaScript

OpenAI

只支持百炼的部分模型。完整列表请参考:OpenAI 兼容模式支持的模型列表。调用费用、输入输出上限等请参考:模型总览

使用前需要安装以下依赖:

npm install @langchain/openai @langchain/core

模型调用:

import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "qwen-plus",
  apiKey: process.env.DASHSCOPE_API_KEY,
  configuration: {
    baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
    // other params...
  },
  // other params...
});

const aiMsg = await llm.invoke([
  {
    role: "system",
    content:
      "You are a helpful assistant that translates English to French. Translate the user sentence.",
  },
  {
    role: "user",
    content: "I love programming.",
  },
]);
console.log('---------------------------');
console.log(aiMsg.content);

工具调用等进阶技巧请前往 LangChain 官方的 ChatOpenAI。完整的 API参考文档请前往 LangChain 官方的 ChatOpenAI API Reference

DashScope

支持百炼所有的文本生成模型,完整列表与调用费用请参考:模型总览。(也支持部署后的模型)

使用前需要安装以下依赖:

npm install @langchain/community @langchain/core

模型调用:

import { ChatAlibabaTongyi } from "@langchain/community/chat_models/alibaba_tongyi";
import { HumanMessage } from "@langchain/core/messages";

// Default model is qwen-turbo
const qwenTurbo = new ChatAlibabaTongyi({
  alibabaApiKey: process.env.DASHSCOPE_API_KEY,
  // other params...
});

// Use qwen-plus
const qwenPlus = new ChatAlibabaTongyi({
  model: "qwen-plus",
  temperature: 1,
  alibabaApiKey: process.env.DASHSCOPE_API_KEY,
  // other params...
});

const messages = [new HumanMessage("Hello")];

const res = await qwenTurbo.invoke(messages);

const res2 = await qwenPlus.invoke(messages);

console.log('---------------------------');
console.log(res.content);
console.log('---------------------------');
console.log(res2.content);

多模态调用、工具调用等进阶技巧请前往 LangChain 官方的 ChatTongyi。完整的 API参考文档请前往 LangChain 官方的 ChatTongyi API Reference

文本嵌入模型(Embedding Model)

支持的模型:

MTEB、CMTEB 是 Embedding 模型的通用评估指标,数值越大,模型效果越好。

模型

MTEB

MTEB(Retrieval task)

CMTEB

CMTEB (Retrieval task)

text-embedding-v1

58.30

45.47

59.84

56.59

text-embedding-v2

60.13

49.49

62.17

62.78

text-embedding-v3

63.39

55.41

68.92

73.23

Python

DashScope

使用前需要安装以下依赖:

pip install langchain-community
pip install dashscope

模型调用:

from langchain_community.embeddings import DashScopeEmbeddings
embeddings = DashScopeEmbeddings(
    model="text-embedding-v2",
    # other params...
)

text = "This is a test document."

query_result = embeddings.embed_query(text)
print("文本向量长度:", len(query_result), sep='')

doc_results = embeddings.embed_documents(
    [
        "Hi there!",
        "Oh, hello!",
        "What's your name?",
        "My friends call me World",
        "Hello World!"
    ])
print("文本向量数量:", len(doc_results), ",文本向量长度:", len(doc_results[0]), sep='')

详细介绍与更多使用方式请前往 LangChain 官方的 DashScope Embeddings。完整的 API参考文档请前往 LangChain 官方的 Embedding API Reference

JavaScript

DashScope

使用前需要安装以下依赖:

npm install @langchain/community @langchain/core

模型调用:

import { AlibabaTongyiEmbeddings } from "@langchain/community/embeddings/alibaba_tongyi";

const model = new AlibabaTongyiEmbeddings({ 
  apiKey: process.env.DASHSCOPE_API_KEY,
  modelName: "text-embedding-v2",
  // other params...
  });
const res = await model.embedQuery(
  "What would be a good company name a company that makes colorful socks?",
);
console.log('---------------------------');
console.log({ res });

详细介绍与更多使用方式请前往 LangChain 官方的 DashScope Embeddings。完整的 API参考文档请前往 LangChain 官方的 Embedding API Reference

重排序模型(Reranker Model)

支持的模型:

MTEB、CMTEB 也是 Rerank 模型的通用评估指标,数值越大,模型效果越好。

数据集

CMTEB(中文)

MTEB(英文)

gte-rerank

68.38

67.62

Python

DashScope

使用前需要安装以下依赖:

pip install langchain-community
pip install dashscope

模型调用:

from langchain_community.document_compressors.dashscope_rerank import DashScopeRerank

sequence = ["text1", "text2", "text3"]

reranker = DashScopeRerank(
    model="gte-rerank",
    # other params...
)
print(reranker.rerank(documents=sequence, query="文本3", top_n=2))

详细介绍与更多使用方式请前往 LangChain 官方的 DashScope Rerank。完整的 API参考文档请前往 LangChain 官方的 Rerank API Reference