Интеграция LangChain с Alibaba Bailian

LangChain в настоящее время является самым популярным фреймворком для разработки приложений на основе больших языковых моделей (LLM). Он помогает разработчикам быстро создавать приложения с промптами, моделями, цепочками инструментов и агентами через унифицированные интерфейсы компонентов.

Alibaba Cloud Bailian (DashScope) — это платформа сервисов LLM от Alibaba Cloud, предоставляющая серию чат-моделей Tongyi Qianwen (qwen), модели текстовых эмбеддингов и модели reranker.

В этой статье объясняется, как интегрировать модели Bailian с LangChain, рассматриваются три категории: чат-модели, модели текстовых эмбеддингов и модели reranker. Также приводятся полные примеры на Python, JavaScript и Java.

Предварительные требования

Нам нужно активировать сервис моделей Alibaba Cloud Bailian и получить API-KEY.

Сначала мы можем использовать основную учётную запись Alibaba Cloud, чтобы посетить платформу сервиса моделей Bailian:https://bailian.console.aliyun.com/Затем нажмите «Login» в правом верхнем углу. После входа нажмите значок шестерёнки ⚙️ в правом верхнем углу, выберите «API Key» и скопируйте API-ключ. Если у вас его нет, вы также можете создать API-ключ:

Прежде чем начать, давайте сначала разберёмся с двумя ключевыми понятиями: «Классы интеграции моделей» в LangChain и «Два режима интеграции» в Bailian.

Классы интеграции моделей

LangChain оборачивает модели от разных провайдеров в единые «классы интеграции».

Код приложения программируется под единый интерфейс. При смене провайдера нужно изменить только класс интеграции и параметры; бизнес-логику почти никогда не требуется менять.

На примере чат-моделей: на стороне Python есть два класса интеграции — ChatOpenAI и ChatTongyi, соответствующие режиму Bailian, совместимому с OpenAI, и нативному режиму DashScope соответственно.

Два режима интеграции

Bailian предоставляет два набора протоколов интеграции; разные протоколы соответствуют разным классам интеграции LangChain.

Режим, совместимый с OpenAIПротокол API совпадает с OpenAI. Любой фреймворк, поддерживающий протокол OpenAI, может подключаться напрямую, что обеспечивает минимальные затраты на интеграцию.

Нативный режим DashScopeОн использует собственный протокол DashScope от Bailian и может вызывать все модели генерации текста Bailian, включая развёрнутые пользовательские модели.

Общая архитектура интеграции показана на следующей схеме:

LangChain 集成阿里云百炼架构图

Так называемый «интерфейс, совместимый с OpenAI» означает, что протокол HTTP API провайдера совпадает с OpenAI.

При условии совместимости протокола любой код или инструменты, написанные для OpenAI, можно использовать напрямую, изменив только конечную точку API.

Настройка переменных окружения

Все языки и способы интеграции единообразно используют переменную окруженияDASHSCOPE_API_KEYдля хранения API-ключа.

Экспорт в терминале в Linux / macOS:

export DASHSCOPE_API_KEY="sk-你的百炼APIKey"

Настройка в Windows (CMD):

set DASHSCOPE_API_KEY=sk-你的百炼APIKey

Рекомендуется записать команду экспорта в файл конфигурации оболочки (например, ~/.bashrc, ~/.zshrc), чтобы не задавать её заново каждый раз при открытии терминала.

Настройка через файл .env (рекомендуется)

Ещё более рекомендуемый подход — записать API-ключ в файл .env в корневом каталоге проекта и использовать python-dotenv для автоматической загрузки его в переменные окружения.

Отделение API-ключа от кода в сочетании с .gitignore предотвращает случайные коммиты и упрощает каждому поддержание собственной конфигурации при совместной работе.

Создайте файл .env в корневом каталоге проекта:

# 文件路径:项目根目录/.env
DASHSCOPE_API_KEY=sk-你的百炼APIKey

Например, в нашем тестовом проектеexample-langchain-testсоздайте.envфайл и добавьте конфигурацию:

Установите python-dotenv:

pip install python-dotenv

Загрузите файл .env в начале вашего Python-кода:

Пример

from dotenv import load_dotenv

load_dotenv()  # Прочитать файл .env в корневой директории проекта и внедрить его как переменные окружения

После загрузки os.getenv("DASHSCOPE_API_KEY") в вашем коде сможет прочитать ключ, что даёт тот же эффект, что и ручной экспорт.

Этот способ загрузки уже был продемонстрирован в примерах в разделе "Чат-модель".

Файл .env содержит конфиденциальные данные. Пожалуйста, добавьте его в .gitignore (напишите строку ".env"), чтобы API-ключ не был закоммичен в репозиторий.

Пожалуйста, замените API-ключ в примерах на настоящий ключ и никогда не делитесь им с другими.


Сравнение двух режимов интеграции

Сначала посмотрите таблицу сравнения, затем выберите режим интеграции по необходимости.

Пункт сравненияРежим совместимости с OpenAIНативный режим DashScope
Принцип интеграцииПовторно использует класс интеграции протокола OpenAIИспользует нативный SDK DashScope
Поддерживаемые моделиТолько некоторые моделиВсе модели генерации текста и развёрнутые модели
Класс интеграции PythonChatOpenAIChatTongyi
Класс интеграции JavaScriptChatOpenAIChatAlibabaTongyi
Класс интеграции JavaOpenAiChatModelQwenChatModel
Применимые сценарииСуществующий код OpenAI нужно быстро переключитьТребуются полные возможности модели или использование развернутых моделей

Оба режима используют один и тот же домен dashscope.aliyuncs.com. Разница заключается в пути: путь режима, совместимого с OpenAI, — /compatible-mode/v1, тогда как путь нативного режима DashScope встроен в SDK.


Чат-модель

Чат-модели — наиболее часто используемый тип моделей, применяемый для таких задач, как многоходовой диалог, вопросы и ответы и генерация контента.

Ниже мы описываем способы интеграции по языкам. В примере единообразно используется модель qwen-plus, которую можно заменить при необходимости.

Python: режим, совместимый с OpenAI

Используйте класс интеграции ChatOpenAI из пакета langchain_openai, чтобы вызывать Bailian как сервис OpenAI.

Сначала установите зависимости:

pip install langchain_openai

Пример кода:

Пример

from langchain_openai import ChatOpenAI
from dotenv import load_dotenv  # Чтение конфигурации из файла .env
import os

load_dotenv()  # Загрузка переменных окружения, таких как API-ключ, из файла .env в корневом каталоге проекта

# Создание экземпляра чат-модели с подключением к Bailian через протокол, совместимый с OpenAI
chatLLM = ChatOpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Прочитать API-ключ Bailian из переменной окружения (обязательно)
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # Конечная точка API Bailian, совместимая с OpenAI (обязательно)
    model="qwen-plus",  # Имя модели (обязательно), здесь qwen-plus используется в качестве примера
    # Другие необязательные параметры: temperature, max_tokens и т. д.
)

# Построить список сообщений многоходового диалога
messages = [
    {"role": "system", "content": "Вы — полезный ассистент."},  # Системное сообщение, задаёт роль ассистента
    {"role": "user", "content": "Кто вы?"},  # Сообщение пользователя, содержание вопроса
]

# Выполнить вызов и вернуть структурированный объект ответа
response = chatLLM.invoke(messages)
print(response.model_dump_json())

Результат вывода (некоторые поля опущены):

{
  "content": "我是通义千问,由阿里云开发的大语言模型,可以回答你的问题、协助创作、提供建议等。",
  "usage": { "prompt_tokens": 12, "completion_tokens": 28, "total_tokens": 40 }
}

После успешного вызова возвращается объект AIMessage. model_dump_json() может сериализовать его в JSON для удобного просмотра полного ответа.

Python: нативный режим DashScope

Используйте класс интеграции ChatTongyi из пакета langchain-community, который использует нативный протокол DashScope и поддерживает потоковый вывод.

ChatTongyi происходит из пакета langchain-community, и сам этот пакет, и dashscope больше не поддерживаются.

Для новых проектов рекомендуется отдавать предпочтение интеграции ChatOpenAI, совместимой с OpenAI. Рассматривайте этот подход только тогда, когда вам нужны нативные возможности DashScope (например, развёрнутые модели).

Сначала установите зависимости:

pip install langchain-community dashscope

Пример кода:

Пример

from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage
from dotenv import load_dotenv  # Чтение конфигурации из файла .env
import os

load_dotenv()  # Загрузить переменные окружения, такие как API-ключи, из файла .env в корне проекта

# Создать чат-модель Qwen, используя нативный протокол DashScope
chatLLM = ChatTongyi(
    model="qwen-plus",  # Имя модели (обязательно)
    dashscope_api_key=os.getenv("DASHSCOPE_API_KEY"),  # Прочитать API-ключ из переменной окружения (обязательно)
    streaming=True,  # Включить потоковый вывод
)

# Потоковая передача вызова с получением и печатью содержимого ответа по частям
res = chatLLM.stream([HumanMessage(content="привет")], streaming=True)
for r in res:
    print("ответ чата:", r.content)

Результат вывода:

chat resp: 你好
chat resp: !我是通义千问,有什么可以帮您的吗?

Потоковый вывод позволяет модели возвращать содержимое по частям во время генерации, что делает его подходящим для чат-интерфейсов, которым нужен эффект пишущей машинки.


Модель текстовых эмбеддингов

Модели эмбеддингов преобразуют текст в семантические векторы, формируя основу для таких приложений, как RAG (генерация с дополненной выборкой) и семантический поиск.

Выбор модели

Bailian предоставляет несколько версий моделей эмбеддингов. Вы можете сравнить их производительность с помощью метрик оценки MTEB и CMTEB; чем больше значение, тем лучше.

МодельMTEBMTEB (задача поиска)CMTEBCMTEB (задача поиска)
text-embedding-v158.3045.4759.8456.59
text-embedding-v260.1349.4962.1762.78
text-embedding-v3 (размерность 1024)63.3955.4168.9273.23
text-embedding-v4 (размерность 1024)68.3659.3070.1473.98

При вызове text-embedding-v3 и text-embedding-v4 через LangChain нельзя указать размерность вектора; по умолчанию они выдают 1024-мерные векторы.

Более новые версии работают лучше, поэтому отдавайте предпочтение v4.

Пример на Python

API эмбеддингов Bailian совместим со спецификацией OpenAI API. Просто используйте класс интеграции OpenAIEmbeddings из пакета langchain-openai и укажите base_url на совместимую конечную точку Bailian.

Не нужно устанавливать больше не поддерживаемые пакеты langchain-community и dashscope.

Сначала установите зависимости:

pip install langchain-openai

OpenAIEmbeddings требует три ключевых параметра: model (имя модели эмбеддингов), api_key (ключ API Bailian) и base_url (совместимая с OpenAI конечная точка Bailian).

base_url фиксирован как https://dashscope.aliyuncs.com/compatible-mode/v1, который совпадает с совместимой конечной точкой для чат-моделей.

Пример кода:

Пример

from langchain_openai import OpenAIEmbeddings
from dotenv import load_dotenv  # Чтение конфигурации из файла .env
import os

load_dotenv()  # Загрузить переменные окружения, такие как API-ключи, из файла .env в корне проекта

# Создайте экземпляр модели эмбеддингов для подключения к Bailian через протокол, совместимый с OpenAI
# chunk_size=10: Embedding API Bailian принимает не более 10 текстов за запрос.
# OpenAIEmbeddings по умолчанию упаковывает 1000 элементов за раз; если база знаний немного большая, будет превышен лимит и возникнет ошибка.
embeddings = OpenAIEmbeddings(
    model="text-embedding-v4",  # Имя модели эмбеддингов (обязательно), здесь в качестве примера используется v4
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Считать API-ключ Bailian из переменной окружения (обязательно)
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # OpenAI-совместимый эндпоинт Bailian (обязательно)
    check_embedding_ctx_length=False,
    chunk_size=10,
)

# Векторизовать один текст запроса
text = "Это тестовый документ."
query_result = embeddings.embed_query(text)
print("Длина вектора текста:", len(query_result), sep='')

# Пакетная векторизация нескольких документов
doc_results = embeddings.embed_documents(
    [
        "Привет!",
        "О, привет!",
        "Как тебя зовут?",
        "Друзья зовут меня World",
        "Hello World!"
    ])
print("Количество текстовых векторов:", len(doc_results), ", длина текстового вектора:", len(doc_results[0]), sep='')

Результат вывода:

文本向量长度:1024
文本向量数量:5 ,文本向量长度:1024

embed_query используется для векторизации пользовательского запроса, а embed_documents — для пакетной векторизации документов-кандидатов. Вычислять сходство можно только тогда, когда оба выходных вектора имеют одинаковую размерность.


Модель реранжировщика

Модели реранжировщика повторно оценивают и переранжируют результаты поиска, значительно повышая качество ответов RAG-приложений.

Параметры модели

Bailian предоставляет следующие модели реранжировщика; выбирайте в зависимости от языка, стоимости и сценария:

МодельМаксимальное количество документовМаксимальный ввод на элементПоддержка языковЦена за единицу (за тысячу токенов)Применимые сценарии
qwen3-vl-rerank1008,000 Token33 основных языка, включая китайский, английский, японский, корейский и т. д.Изображение 0.0018 yuan / текст 0.0007 yuanКластеризация изображений, кросс-модальный поиск, поиск изображений
qwen3-rerank5004,000 Token100+ языков, включая китайский, английский, испанский, французский, японский, корейский и т. д.0.0005 yuanСемантический поиск по тексту, приложения RAG
gte-rerank-v2—30,000 TokenБолее 50 языков, включая китайский, английский, японский, корейский, тайский и т. д.0.0008 yuanПереранжирование длинных текстов

Пример на Python

Используйте класс интеграции DashScopeRerank из пакета langchain-community.

В этом примере используется DashScopeRerank из пакета langchain-community.

langchain-community и dashscope больше не поддерживаются. Для новых проектов обратите внимание на альтернативные методы интеграции, официально предоставляемые Bailian.

Сначала установите зависимости:

pip install langchain-community dashscope

Пример кода:

Пример

from langchain_community.document_compressors.dashscope_rerank import DashScopeRerank
from dotenv import load_dotenv  # Чтение конфигурации из файла .env

load_dotenv()  # Загрузить переменные окружения, такие как API-ключи, из файла .env в корне проекта

# Смоделировать список текстов-кандидатов, возвращаемых поиском
sequence = ["Пример — это китайский обучающий сайт, предоставляющий руководства по программированию", "text2", "text3"]

# Создать экземпляр модели реранкера
reranker = DashScopeRerank(
    model="gte-rerank-v2",  # Имя модели реранкера (обязательно)
)

# Переранжировать тексты-кандидаты на основе запроса, возвращая top_n с наивысшими оценками
print(reranker.rerank(documents=sequence, query="Что такое Python", top_n=2))

Метод rerank повторно оценивает и переранжирует документы-кандидаты на основе запроса, а top_n задаёт количество возвращаемых результатов. Обычно используется на этапе точного ранжирования после поиска RAG.


Интеграция JavaScript и Java

JavaScript: режим совместимости с OpenAI

В Node.js используйте класс интеграции ChatOpenAI из пакета @langchain/openai.

Сначала установите зависимости:

npm install @langchain/openai @langchain/core

Пример кода:

Пример

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

// Создать экземпляр чат-модели для подключения к Bailian через протокол, совместимый с OpenAI
const llm = new ChatOpenAI({
  model: "qwen-plus",  // Имя модели (обязательно), здесь в качестве примера используется qwen-plus
  apiKey: process.env.DASHSCOPE_API_KEY,  // Прочитать API-ключ Bailian из переменной окружения (обязательно)
  configuration: {
    baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",  // Конечная точка API Bailian, совместимого с OpenAI (обязательно)
  },
});

// Выполнить вызов чата, возвращающий объект сообщения ИИ
const aiMsg = await llm.invoke([
  { role: "system", content: "Вы — полезный помощник, который переводит с английского на французский. Переведите предложение пользователя." },  // Системное сообщение
  { role: "user", content: "Я люблю программировать." },  // Сообщение пользователя
]);
console.log('---------------------------');
console.log(aiMsg.content);

Результат вывода:

---------------------------
J'adore la programmation.

JavaScript: нативный режим DashScope

Используйте класс интеграции ChatAlibabaTongyi из пакета @langchain/community.

Сначала установите зависимости:

Пример

npm install @langchain/community @langchain/core

Пример кода:

Пример

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

// По умолчанию используется модель qwen-turbo; требуется только API-ключ
const qwenTurbo = new ChatAlibabaTongyi({
  alibabaApiKey: process.env.DASHSCOPE_API_KEY,  // Чтение API-ключа из переменной среды (обязательно)
});

// Используйте qwen-plus, и вы можете дополнительно указать параметры генерации, такие как temperature
const qwenPlus = new ChatAlibabaTongyi({
  model: "qwen-plus",  // Название модели (обязательно)
  temperature: 1,  // Температура генерации; чем больше значение, тем более разнообразным будет вывод
  alibabaApiKey: process.env.DASHSCOPE_API_KEY,  // Чтение API-ключа из переменной среды (обязательно)
});

const messages = [new HumanMessage("Привет")];

// Вызовите две модели по отдельности и выведите результаты
const res = await qwenTurbo.invoke(messages);
const res2 = await qwenPlus.invoke(messages);

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

Java: режим совместимости с OpenAI (LangChain4j)

Экосистема Java использует фреймворк LangChain4j для подключения к Bailian через модуль langchain4j-open-ai.

Для LangChain4j 1.0.0-beta3 требуется Java 17 или выше.

При компиляции с Java 11 будет выдана ошибка "Unsupported class file major version 61". Обновление JDK решит эту проблему.

Добавьте зависимость в pom.xml:

<!-- 文件路径:pom.xml -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>1.0.0-beta3</version>
</dependency>

Пример кода:

Пример

import dev.langchain4j.data.message.SystemMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;

public class LangChainOpenAITest {
    public static void main(String[] args) {
        // Создать модель чата, повторно использовать протокол OpenAI для подключения к Bailian
        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))  // Считать ключ API из переменной окружения (обязательно)
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")  // Адрес Bailian, совместимый с OpenAI (обязательно)
                .modelName("qwen-plus")  // Имя модели (обязательно)
                .build();

        SystemMessage systemMessage = SystemMessage.from("Вы эксперт по психологии");  // Системное сообщение, задать роль
        UserMessage userMessage = UserMessage.from("Привет");  // Сообщение пользователя

        System.out.println(model.chat(systemMessage, userMessage).aiMessage().text());
    }
}

Java: нативный режим DashScope (LangChain4j)

Используйте модуль langchain4j-community-dashscope, поддерживающий обычные и потоковые вызовы.

Добавьте зависимость в pom.xml:

<!-- 文件路径:pom.xml -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-community-dashscope</artifactId>
    <version>1.0.0-beta3</version>
</dependency>

Пример кода (обычный вызов и потоковый вызов):

Пример

import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.community.model.dashscope.QwenStreamingChatModel;
import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.SystemMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.chat.StreamingChatLanguageModel;
import dev.langchain4j.model.chat.request.ChatRequest;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;

public class LangChainDashScopeTest {
    public static void main(String[] args) {
        chatLanguageModelTest();  // Обычный вызов
// streamingChatLanguageModelTest(); // Потоковый вызов, раскомментируйте при необходимости
    }

    // Обычный вызов: возвращает полный результат сразу
    public static void chatLanguageModelTest() {
        ChatLanguageModel qwenModel = QwenChatModel.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))  // Считать ключ API из переменной окружения (обязательно)
                .modelName("qwen-plus")  // Имя модели (обязательно)
                .build();

        // Построение запроса, сообщения расположены в хронологическом порядке
        ChatRequest request = ChatRequest.builder()
                .messages(new ChatMessage[]{
                        SystemMessage.from("Вы эксперт по психологии"),  // Системное сообщение
                        UserMessage.from("Привет")  // Сообщение пользователя
                })
                .build();
        System.out.println(qwenModel.chat(request).aiMessage().text());
    }

    // Потоковый вызов: получать сгенерированный текст по сегментам
    public static void streamingChatLanguageModelTest() {
        StreamingChatLanguageModel model = QwenStreamingChatModel.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .modelName("qwen-plus")
                .build();

        model.chat("Привет", new StreamingChatResponseHandler() {
            @Override
            public void onPartialResponse(String s) {  // Колбэк один раз для каждого сгенерированного сегмента
                System.out.println(s);
            }

            @Override
            public void onCompleteResponse(ChatResponse chatResponse) {  // Генерация завершена
                System.out.println("Диалог завершен");
                System.exit(0);
            }

            @Override
            public void onError(Throwable throwable) {  // Возникло исключение
                System.out.println("Возникло исключение");
                System.exit(0);
            }
        });
    }
}

LangChain4j также предоставляет Spring Boot Starter. Не нужно вручную создавать объекты моделей; достаточно настроить в application.properties.

Пример

# Путь к файлу: application.properties
# API-ключ (обязательно)
langchain4j.open-ai.chat-model.api-key=${DASHSCOPE_API_KEY}
# Имя модели (обязательно)
langchain4j.open-ai.chat-model.model-name=qwen-plus
# Адрес API, совместимого с OpenAI (обязательно)
langchain4j.open-ai.chat-model.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1
# Порт сервиса
server.port=9000

У собственного Starter DashScope элементы конфигурации имеют те же имена. Просто измените префикс на langchain4j.community.dashscope.chat-model, и нет необходимости настраивать base-url.


Примечания / Часто задаваемые вопросы

При возникновении проблем во время интеграции вы можете быстро найти их, обратившись к контрольному списку ниже.

Требования к версии Java

LangChain4j 1.0.0-beta3 требует Java 17 или более поздней версии.

При компиляции с Java 11 будет выдано сообщение "Unsupported class file major version 61". Обновление JDK решит эту проблему.

Режим, совместимый с OpenAI, поддерживает только некоторые модели

API, совместимый с OpenAI, поддерживает только некоторые модели Bailian. Полный список см. в официальной документации.

Если вызываемая модель не входит в поддерживаемый диапазон, переключитесь на нативный режим DashScope.

Размерность векторов эмбеддингов по умолчанию

При вызове text-embedding-v3 / v4 через LangChain они по умолчанию выдают 1024-мерные векторы, и размерность нельзя указать вручную.

При создании таблиц базы данных, пожалуйста, зарезервируйте поле вектора размерности 1024.

Безопасность ключа API

Не встраивайте API Key в код жестко; единообразно внедряйте его через переменную среды DASHSCOPE_API_KEY.

Для production-сред рекомендуется использовать в сочетании с Alibaba Cloud Key Management Service (KMS).


Ссылки

Следующая официальная документация поможет вам разобраться в соответствующих деталях:

ТемаСсылка
Получить API-ключhttps://help.aliyun.com/zh/model-studio/get-api-key
Настройте переменные средыhttps://help.aliyun.com/zh/model-studio/configure-api-key-through-environment-variables
Список моделей Bailianhttps://help.aliyun.com/zh/model-studio/getting-started/models
Список моделей, совместимых с OpenAIhttps://help.aliyun.com/zh/model-studio/compatibility-of-openai-with-dashscope
Документация по ChatOpenAI для Pythonhttps://python.langchain.com/docs/integrations/chat/openai/
Документация по OpenAIEmbeddings для Pythonhttps://python.langchain.com/docs/integrations/text_embedding/openai/
Документация Python ChatTongyihttps://python.langchain.com/docs/integrations/chat/tongyi/
Документация LangChain4j DashScopehttps://docs.langchain4j.dev/integrations/language-models/dashscope
Другие расширения