/gigachain

⚡ Building applications with LLMs through composability ⚡

Primary LanguagePythonMIT LicenseMIT

CI Downloads License: MIT


Logo

🦜️🔗 GigaChain (GigaChat + LangChain)

Библиотека для разработки LangChain-style приложений на русском языке с поддержкой GigaChat
Создать issue · Документация GigaChat

О проекте

Product Name Screen Shot

Версия библиотеки LangChain адаптированная для русского языка с поддержкой нейросетевой модели GigaChat.

Библиотека GigaChain обратно совместима с LangChain, что позволяет использовать ее не только для работы с GigaChat, но и при работе с другими LLM в различных комбинациях.

Warning

GigaChain находится в состоянии альфа-версии: мы заняты переводом библиотеки и ее адаптацией для работы с GigaChat. Будьте осторожны при использовании GigaChain в своих проектах, так как далеко не все компоненты оригинальной библиотеки проверены на совместимость с GigaChat.

Будем рады вашим PR и issues.

Библиотека упростит интеграцию вашего приложения с нейросетевой моделью GigaChat и поможет в следующих задачах:

  • Работа с промптами и LLM.

    Включая управление промптами и их оптимизацию. GigaChain предоставляет универсальный интерфейс для всех LLM, а также стандартные инструменты для работы с ними.

  • Создание цепочек (Chains).

    Цепочки представляют собой последовательность вызовов к LLM и/или другим инструментам. GigaChain предоставляет стандартный интерфейс для создания цепочек, различные интеграции с другими инструментами и готовые цепочки для популярных приложений.

  • Дополнение данных (Data Augmented Generation).

    Генерация с дополнением данными включает в себя специфические типы цепочек, которые сначала получают данные от внешнего источника, а затем используют их в генерации. Примеры включают в себя суммирование больших текстов и ответы на вопросы по заданным источникам данных.

    Пример — Ответы на вопросы по статьям из wikipedia)

  • Работа с агентами (Agents).

    Агент представляет собой LLM, которая принимает решение о дальнейшем действии, отслеживает его результат, и, с учетом результата, принимает следующее решение. Процесс повторяется до завершения. GigaChain предоставляет стандартный интерфейс для работы с агентами, выбор агентов и примеры готовых агентов.

    Пример — Игра в стиле DnD с GPT-3.5 и GigaChat.

  • Создание памяти.

    Память сохраняет состояние между вызовами цепочки или агента. GigaChain предоставляет стандартный интерфейс для создания памяти, коллекцию реализаций памяти и примеры цепочек и агентов, которые используют память.

  • Самооценка (Evaluation).

    BETA Генеративные модели традиционно сложно оценивать с помощью стандартных метрик. Один из новых способов оценки — использование самих языковых моделей. GigaChain предоставляет некоторые запросы и цепочки для решения таких задач.

Warning

GigaChain наследует несовместимые изменения, которые были сделаны в оригинальной библиотеке 28.07.2023. Подробнее о том, как мигрировать свой проект читайте в документации Langchain.

Установка

Библиотеку можно установить с помощью pip:

pip install gigachain

Работа с GigaChain

Основной особенностью библиотеки является наличие модуля gigachat, который позволяет обращаться к нейросетевой модели GigaChat.

Note

О том как подключить GigaChat читайте в официальной документации.

Вот простой пример работы с чатом с помощью модуля:

"""Пример работы с чатом через gigachain"""
from langchain.schema import HumanMessage, SystemMessage
from langchain.chat_models.gigachat import GigaChat

# Авторизация в сервисе GigaChat
chat = GigaChat(credentials=..., verify_ssl_certs=False)

messages = [
    SystemMessage(
        content="Ты эмпатичный бот-психолог, который помогает пользователю решить его проблемы."
    )
]

while(True):
    user_input = input("User: ")
    messages.append(HumanMessage(content=user_input))
    res = chat(messages)
    messages.append(res)
    print("Bot: ", res.content)

Развернутую версию примера смотрите в notebook Работа с GigaChat.

Больше примеров в коллекции.

Описание модуля gigachat

Модуль gigachat позволяет авторизовать запросы от вашего приложения в GigaChat с помощью GigaChat API. Модуль поддерживает работу как в синхронном, так и в асинхронном режиме. Кроме этого модуль поддерживает обработку потоковой передачи токенов1.

Note

Сейчас проект GigaChat API доступен только юридическим лицам и индивидуальным предпринимателям после подписания договора.

Как подключить GigaChat API читайте в официальной документации.

Модуль поддерживает не только GigaChat. Поэтому, если ваше приложение уже использует другие нейросетевые модели, интеграция с GigaChat не составит труда.

Note

Модуль не поддерживает работу с функциями, так как в настоящий момент они отсутствуют в GigaChat.

Коллекция примеров

Ниже представлен список примеров использования GigaChain.

Базовые примеры работы с GigaChat

Развлекательные примеры

Примеры работы с другими LLM

Примеры приложений для Streamlit

Примеры сторонних приложений, использующих GigaChain

Участие в проекте

GigaChain — это проект с открытым исходным кодом в быстроразвивающейся области. Мы приветствуем любое участие в разработке, развитии инфраструктуры или улучшении документации. [BETA] Генеративные модели, как известно, трудно оценить с помощью традиционных показателей. Одним из новых способов их оценки является использование для оценки самих языковых моделей. LangChain предоставляет несколько подсказок/цепочек для помощи в этом.

Подробнее о том, как внести свой вклад.

Лицензия

Проект распространяется по лицензии MIT, доступной в файле LICENSE.

Footnotes

  1. В настоящий момент эта функциональность доступна в бета-режиме.