0

LangChain-YandexGPT: Интеграция YandexGPT с LangChain.js и поддержка Tool Calling

17 сентября, 2025
1 минута чтения

Рад представить новую библиотеку langchain-yandexgpt, которая обеспечивает простую и мощную интеграцию YandexGPT в экосистему LangChain.js. Основная цель этой библиотеки — предоставить разработчикам удобный инструмент для создания приложений на базе больших языковых моделей от Яндекса, включая поддержку одной из самых востребованных функций — вызова инструментов (Tool Calling).

Ключевые возможности

langchain-yandexgpt расширяет стандартный класс ChatYandexGPT из пакета @langchain/yandex, добавляя важные функции:

  • Поддержка Tool Calling: Легко определяйте и используйте внешние инструменты (функции) прямо из вашей LLM-цепочки. Библиотека позволяет описывать инструменты с помощью zod-схем, автоматически преобразуя их в формат, понятный для YandexGPT. Модель сама решает, какой инструмент и с какими параметрами вызвать для ответа на запрос пользователя.
  • Простая интеграция: Библиотека спроектирована так, чтобы её использование было максимально интуитивным для тех, кто уже знаком с LangChain.js.
  • Гибкая настройка: Вы можете управлять параметрами модели, такими как temperature, maxTokens, и выбирать нужную версию модели (yandexgpt-lite, yandexgpt и др.).

Как это работает? Пример использования

Давайте рассмотрим, как легко можно заставить модель использовать внешний инструмент для получения информации о погоде.

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

npm install langchain-yandexgpt

Теперь напишем код. Сначала определим инструмент get_weather с помощью @langchain/core/tools и zod для описания его аргументов.

import { HumanMessage, SystemMessage } from '@langchain/core/messages';
import { tool } from '@langchain/core/tools';
import { LangChainYandexGPT } from 'langchain-yandexgpt';
import { z } from 'zod';

// 1. Настраиваем модель
const llm = new LangChainYandexGPT({
  temperature: 0,
  apiKey: 'ВАШ_YANDEX_GPT_API_KEY',
  folderID: 'ВАШ_YANDEX_GPT_CATALOG_ID',
  model: 'yandexgpt-lite',
});

// 2. Определяем инструмент для получения погоды
const weatherTool = tool(
  async ({ city }) => {
    // Здесь могла бы быть реальная логика запроса к API погоды
    return `Погода в городе ${city}: солнечно, температура 22°C.`;
  },
  {
    name: 'get_weather',
    description: 'Получает актуальную информацию о погоде в указанном городе.',
    schema: z.object({
      city: z.string().describe('Название города, например "Москва"'),
    }),
  }
);

// 3. Привязываем инструмент к модели
const modelWithTools = llm.bindTools([weatherTool]);

// 4. Делаем запрос к модели
const response = await modelWithTools.invoke([
  new SystemMessage(
      'Используй инструмент get_weather, чтобы получить информацию о погоде.',
  ),
  new HumanMessage('Какая погода в Москве?'),
]);

// 5. Обрабатываем ответ модели
if (response.tool_calls && response.tool_calls.length > 0) {
  console.log('Модель решила вызвать инструмент:', response.tool_calls);
  // Здесь будет логика вызова weatherTool.invoke(toolCall.args)
  // и передачи результата обратно в модель для финального ответа.
} else {
  console.log('Ответ модели:', response.content);
}

В этом примере модель не будет сама придумывать погоду. Вместо этого она вернет объект tool_calls, указывающий, что для ответа на вопрос нужно вызвать функцию get_weather с аргументом { city: ‘Москва’ }. Это открывает огромные возможности для создания интеллектуальных агентов, способных взаимодействовать с внешними API и системами.

Библиотека открыта и на доступна на GitHub. Буду рад вашим отзывам, предложениям и участию в развитии проекта!

Добавить комментарий Отменить ответ

Предыдущая статья

Docker контейнер для Vosk

Exit mobile version