1. Введение в LLM

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

В настоящее время LangChain инкапсулирует множество больших языковых моделей и также поддерживает пользовательские модели. Разработчики могут инкапсулировать свои собственные новые модельные интерфейсы.

  • Примечание: В настоящее время доступно множество открытых и коммерческих больших моделей. Учитывая различия в стоимости и возможностях моделей, у каждого может быть свой выбор. Кроме того, может быть частая смена моделей, и разработчики могут не хотеть изменять слишком много бизнес-кода при изменении моделей. Вот где проявляется ценность LangChain.

2. Установка

2.1 Установка

Для использования OpenAI LLM в LangChain пользователям необходимо установить пакет OpenAI для Python, запустив следующую команду:

pip install openai

2.2 Настройка ключа API

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

export OPENAI_API_KEY="ваш-ключ-api"

Кроме того, если вы не хотите устанавливать переменную среды, вы также можете передать ключ API непосредственно при инициализации класса OpenAI LLM, как показано ниже:

from langchain_openai import OpenAI

llm = OpenAI(openai_api_key="ваш-ключ-api")

3. Реализация LCEL

В LangChain LLM реализуют интерфейс Runnable для языка выражений LangChain (LCEL). Это означает, что они поддерживают различные вызовы функций, такие как invoke, stream, batch и другие.

LLM принимает ввод строк или объекты, которые могут быть приведены к строковой подсказке, включая List[BaseMessage] и PromptValue.

4. Пример использования LLM

4.1 Вызов

Для вызова LLM с конкретной подсказкой можно использовать функцию invoke, как показано ниже:

llm.invoke("Укажите здесь подсказку для LLM")

4.2 Потоковая передача

Метод получения и обработки текстового вывода в реальном времени из LLM называется потоковой передачей. Ниже приведен пример использования LLM для потоковой обработки:

for chunk in llm.stream("Укажите здесь подсказку для потоковой передачи LLM"):
    print(chunk, end="", flush=True)

4.3 Пакетная обработка

Пакетная обработка позволяет параллельную обработку нескольких входных данных для LLM. Вы можете обработать пакет подсказок следующим образом:

llm.batch(["подсказка 1", "подсказка 2", "подсказка 3"])

4.4 Асинхронные операции

Для улучшения эффективности можно использовать асинхронные операции в связке с LLM. Асинхронные операции, такие как ainvoke, astream, abatch и astream_log, позволяют асинхронное выполнение. Ниже приведен пример использования LLM для асинхронной потоковой обработки:

async for chunk in llm.astream("Укажите здесь асинхронную подсказку для потоковой передачи LLM"):
    print(chunk, end="", flush=True)

Эти примеры демонстрируют различные способы использования LLM для задач обработки естественного языка в рамках среды LangChain.