Модели чата

Модели чата являются вариантом языковых моделей. Хотя модели чата используют языковые модели (LLM) на нижнем уровне, их общедоступные интерфейсы несколько отличаются. Вместо того, чтобы предоставлять API для "ввода текста, вывода текста", они используют интерфейс, который принимает "чат-сообщения" в качестве ввода и вывода. Весь процесс взаимодействия моделей чата схож с процессом обмена чат-сообщениями.

Начало работы с моделями чата

Эта глава основана на модели OpenAI.

Конфигурация

По умолчанию в LangChain не установлены зависимости моделей. Сначала установите пакет Python для OpenAI:

pip install langchain-openai

Для доступа к API требуется ключ API, который можно настроить через переменные среды. В следующем примере показано, как его установить в среде Linux:

export OPENAI_API_KEY="..."

Если вы предпочитаете не устанавливать переменные среды, вы можете передать ключ непосредственно через именованный параметр openai_api_key при инициализации класса OpenAI LLM:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

Также вы можете инициализировать его без параметров:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

Сообщения

Интерфейс модели чата основан на сообщениях, а не на обычном тексте. Типы сообщений, поддерживаемые LangChain в настоящее время, включают AIMessage, HumanMessage, SystemMessage, FunctionMessage и ChatMessage, где для ChatMessage требуется произвольный параметр роли. В большинстве случаев вам придется иметь дело только с HumanMessage, AIMessage и SystemMessage.

LCEL

Модель чата реализует интерфейс Runnable, поддерживающий методы, такие как invoke, ainvoke, stream, astream, batch, abatch, astream_log, поэтому модель чата также может использоваться для языка выражений LangChain (LCEL).

Модель чата принимает ввод в виде List[BaseMessage] или может принимать объекты, которые могут быть преобразованы в сообщения, включая str (преобразованные в HumanMessage) и PromptValue.

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="Вы - полезный помощник"),
    HumanMessage(content="Какова цель регуляризации модели?"),

Вызов модели с массивом сообщений:

chat.invoke(messages)

Пример возвращаемого сообщения:

AIMessage(content="Содержание ответа искусственного интеллекта...детали опущены...")

Потоковый вывод ответа искусственного интеллекта:

for chunk in chat.stream(messages):
    print(chunk.content, end="", flush=True)