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.