![Logo](/ai-forever/gigachain/raw/master/static/img/logo.png)
Набор решений для разработки LLM-приложений на русском языке с поддержкой GigaChat
Создать issue
·
Документация GigaChain
GigaChain – это набор решений для создания приложений с использованием больших языковых моделей (LLM). GigaChain охватывает все этапы разработки от прототипирования и исследования, до запуска в эксплуатацию и поддержки.
В состав GigaChain входят такие библиотеки для работы с моделями GigaChat, как:
langchain-gigachat — партнерский пакет популярного open source фреймворка LangChain для разработки комплексных LLM-приложений. Пакет позволяет использовать все возможности фреймворка и моделей GigaChat, в том числе создание агентов с помощью LangGraph. Библиотека langchain-gigachat доступна как для Python, так и для JavaScript.
- Документация LangChain: для Python, для JavaScript;
- Страница партнерского пакета langchain-gigachat для Python в официальной документации LangChain.
- gigachat — обертка для REST API GigaChat. Она управляет авторизацией запросов, упрощает отправку сообщений в модели GigaChat и предоставляет другие методы для работы с API. Библиотека доступна как для Python, так и для JavaScript.
В этом репозитории вы найдете краткие инструкции по началу работы с библиотеками, а так же ссылки на различные примеры их использования.
Для работы с библиотеками langchain-gigachat и gigachat вам понадобятся:
-
Python версии 3.9 и выше для работы библиотеками Python.
-
Node.js версии 16 и выше для работы с библиотеками JavaScript.
-
Ключ авторизации для работы с API. О том, как получить ключ авторизации — в документации GigaChat API.
-
Если нужно, вы можете отключить проверку сертификатов. Подробнее — в примерах ниже.
Для установки библиотеки используйте менеджер пакетов pip:
pip install langchain-gigachat
Запустите пример:
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_gigachat.chat_models import GigaChat
giga = GigaChat(
# Для авторизации запросов используйте ключ, полученный в проекте GigaChat API
credentials="ваш_ключ_авторизации",
verify_ssl_certs=False,
)
messages = [
SystemMessage(
content="Ты эмпатичный бот-психолог, который помогает пользователю решить его проблемы."
)
]
while(True):
user_input = input("Пользователь: ")
if user_input == "пока":
break
messages.append(HumanMessage(content=user_input))
res = giga.invoke(messages)
messages.append(res)
print("GigaChat: ", res.content)
Объект GigaChat принимает параметры:
-
credentials
— ключ авторизации для обмена сообщениями с GigaChat API. Подробнее о получении ключа авторизации. -
scope
— необязательный параметр, в котором можно указать версию API. По умолчанию запросы передаются в версию для физических лиц. Возможные значения:GIGACHAT_API_PERS
— версия API для физических лиц;GIGACHAT_API_B2B
— доступ для ИП и юридических лиц по предоплате;GIGACHAT_API_CORP
— доступ для ИП и юридических лиц по схеме pay-as-you-go.
-
model
— необязательный параметр, в котором можно задать модель GigaChat. По умолчанию запросы передаются в модель GigaChat Lite (model="GigaChat"
). -
verify_ssl_certs
— необязательный параметр, с помощью которого можно отключить проверку сертификатов НУЦ Минцифры. -
streaming
— необязательный параметр, который включает и отключает потоковую генерацию токенов. По умолчаниюFalse
. Потоковая генерация позволяет повысить отзывчивость интерфейса программы при работе с длинными текстами.
Tip
Спросите чат-бот LangChain, как использовать GigaChat с инструментами фреймворка.
Исходный код чат-бота — в репозитории chat-langchain.
Для установки библиотеки используйте менеджер пакетов pip:
pip install gigachat
Вызовите подходящий метод для запроса в API:
from gigachat import GigaChat
# Для авторизации запросов используйте ключ, полученный в проекте GigaChat API
with GigaChat(credentials="ваш_ключ_авторизации", verify_ssl_certs=False) as giga:
response = giga.chat("Какие факторы влияют на стоимость страховки на дом?")
print(response.choices[0].message.content)
Объект GigaChat принимает параметры:
-
credentials
— ключ авторизации для обмена сообщениями с GigaChat API. Подробнее о получении ключа авторизации. -
scope
— необязательный параметр, в котором можно указать версию API. Возможные значения:GIGACHAT_API_PERS
— версия API для физических лиц;GIGACHAT_API_B2B
— доступ для ИП и юридических лиц по предоплате;GIGACHAT_API_CORP
— доступ для ИП и юридических лиц по схеме pay-as-you-go.
По умолчанию запросы передаются в версию для физических лиц.
-
model
— необязательный параметр, в котором можно явно задать модель GigaChat. По умолчанию запросы передаются в модель GigaChat Lite (значение поляGigaChat
). -
verify_ssl_certs
— необязательный параметр, с помощью которого можно отключить проверку сертификатов НУЦ Минцифры.
В отличие от библиотеки langchain-gigachat, для запуска потоковой передачи используйте метод stream()
:
from gigachat import GigaChat
for chunk in GigaChat(credentials="ваш_ключ_авторизации",verify_ssl_certs=False, scope="GIGACHAT_API_PERS", model="GigaChat-Max").stream("Напиши рассказ про двух котят."):
print(chunk.choices[0].delta.content, end="", flush=True)
Tip
Больше примеров работы с библиотекой — в репозитории.
Для установки библиотеки используйте менеджер пакетов npm:
npm install --save langchain-gigachat
Запустите простой пример:
import { Agent } from 'node:https';
import { GigaChat } from "langchain-gigachat"
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
const httpsAgent = new Agent({
rejectUnauthorized: false, // Отключение проверки сертификатов НУЦ Минцифры
});
const giga = new GigaChat({
credentials: 'ключ_авторизации',
model: 'GigaChat-Max',
httpsAgent
})
const messages = [
new SystemMessage("Переведи следующее сообщение на английский"),
new HumanMessage("Привет!"),
];
const resp = await giga.invoke(messages);
console.log(resp.choices[0]?.message.content);
Объект GigaChat принимает параметры:
-
credentials
— ключ авторизации для обмена сообщениями с GigaChat API. Подробнее о получении ключа авторизации. -
scope
— необязательный параметр, в котором можно указать версию API. По умолчанию запросы передаются в версию для физических лиц. Возможные значения:GIGACHAT_API_PERS
— версия API для физических лиц;GIGACHAT_API_B2B
— доступ для ИП и юридических лиц по предоплате;GIGACHAT_API_CORP
— доступ для ИП и юридических лиц по схеме pay-as-you-go.
-
model
— необязательный параметр, в котором можно задать модель GigaChat. По умолчанию запросы передаются в модель GigaChat Lite (model="GigaChat"
). -
httpsAgent
— необязательный параметр, который позволяет задать настройки HTTPS. Эти настройки будут использованы при подключении к серверу API. Вы можете использовать их для отключения проверки сертификатов НУЦ Минцифры.
Для установки библиотеки используйте менеджер пакетов npm:
npm install gigachat
Вызовите подходящий метод для запроса в API:
import GigaChat from 'gigachat';
import { Agent } from 'node:https';
const httpsAgent = new Agent({
rejectUnauthorized: false, // Отключение проверки сертификатов НУЦ Минцифры
});
const giga = new GigaChat({
model: 'GigaChat',
credentials: 'ключ_авторизации',
httpsAgent: httpsAgent,
});
giga
.chat({
messages: [{ role: 'user', content: 'Привет, как дела?' }],
})
.then((resp) => {
console.log(resp.choices[0]?.message.content);
});
Объект GigaChat принимает параметры:
-
credentials
— ключ авторизации для обмена сообщениями с GigaChat API. Подробнее о получении ключа авторизации. -
model
— необязательный параметр, в котором можно явно задать модель GigaChat. По умолчанию запросы передаются в модель GigaChat Lite (значение поляGigaChat
). -
scope
— необязательный параметр, в котором можно указать версию API. Возможные значения:GIGACHAT_API_PERS
— версия API для физических лиц;GIGACHAT_API_B2B
— доступ для ИП и юридических лиц по предоплате;GIGACHAT_API_CORP
— доступ для ИП и юридических лиц по схеме pay-as-you-go.
По умолчанию запросы передаются в версию для физических лиц.
Настройки HTTPS, которые добавляются при подключении к серверу API
httpsAgent
— необязательный параметр, который позволяет задать настройки HTTPS. Эти настройки будут использованы при подключении к серверу API. Вы можете использовать их для отключения проверки сертификатов НУЦ Минцифры.
Tip
Больше примеров работы с библиотекой — в репозитории.
Ниже представлен список интерактивных примеров для Python и JavaScript в формате Jupyter-блокнотов.
При запуске примеров могут возникать проблемы, связанные с особенностями локального окружения Python. Чтобы их избежать, используйте чистое виртуальное окружение.
- Retrieval-Augmented Generation (RAG):
- Агенты:
- Извлечение структурированной информации
- Работа с изображениями:
- Retrieval-Augmented Generation (RAG)
- Работа с функциями
- Выделение сущностей в тексте
- Пример разработки агента на основе LangGraph.js и GigaChat API
- Документация GigaChat API:
- Документация LangChain:
- Документация LangGraph.