Giter Club home page Giter Club logo

gigachain's Introduction

CI Downloads License: MIT


Logo

🦜️🔗 GigaChain (GigaChat + LangChain)

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

Product Name Screen Shot

🤔 Что такое GigaChain?

GigaChain это фреймворк для разработки приложений с использованием больших языковых моделей (LLM), таких как GigaChat или YandexGPT. Он позволяет создавать приложения, которые:

  • Учитывают контекст: подключите свою модель к источникам данных
  • Могут рассуждать: Положитесь на модель в построении рассуждениях (о том, как ответить, опираясь на контекст, какие действия предпринять и т.д.)

Warning

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

Фреймворк включает:

  • Библиотеку GigaChain. Библиотека на Python содержит интерфейсы и интеграции для множества компонентов, базовую среду выполнения для объединения этих компонентов в цепочки и агенты, а также готовые реализации цепочек и агентов.
  • Хаб промптов. Набор типовых отлаженных промптов для решения различных задач.
  • GigaChain Templates. Коллекция легко развертываемых шаблонных решений для широкого спектра задач.
  • GigaServe. Библиотека, позволяющая публиковать цепочки GigaChain в форме REST API.
  • GigaGraph. Библиотека, дающая возможность работать с LLM (большими языковыми моделями), для создания приложений, которые используют множество взаимодействующих цепочек (акторов) и сохраняют данные о состоянии. Так как в основе GigaGraph лежит GigaChain, предполагается совместное использование обоих библиотек.

Кроме этого, фреймворк совместим со сторонним сервисом LangSmith — платформой для разработчиков, которая позволяет отлаживать, тестировать, оценивать и отслеживать цепочки, построенные на любой платформе LLM, и легко интегрируется с LangChain и GigaChain..

Репозиторий содержит следующие компоненты:

Стэк технологий GigaChain

Warning

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

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

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

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

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

    Пример — Работа с хабом промптов на примере задачи суммаризации книг

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

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

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

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

    Пример — Ответы на вопросы по документу на примере "разговор с книгой" (RAG)

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

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

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

    Пример — Создание ассистента с тремя функциями

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

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

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

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

Установка

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

pip install gigachain-community

Миграция с LangChain

Для миграции с LangChain и начала использования GigaChain нужно удалить все компоненты библиотеки langchain:

pip uninstall langchain langchain-experimental langchain-core langchain-community

После чего установить библиотеку gigachain:

pip install gigachain-community

Работа с GigaChain

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

Авторизация запросов к GigaChat

Для авторизации запросов к GigaChat вам понадобится получить авторизационные данные для работы с GigaChat API.

Note

О том как получить авторизационные данные для доступа к GigaChat читайте в официальной документации.

Для работы с сервисом GigaChat передайте полученные авторизационные данные в параметре credentials объекта GigaChat.

chat = GigaChat(credentials=<авторизационные_данные>)

Для обращения к GigaChat в вашем приложении или в вашей ОС должны быть установлены сертификаты НУЦ Минцифры. О том как настроить сертификаты НУЦ Минцифры для обращения к GigaChat читайте в официальной документации.

Вы можете установить сертификаты с помощью утилиты gigachain-cli. Для этого:

  1. Установите утилиту с помощью менеджера пакетов pip:
pip install gigachain-cli
  1. Установите сертификаты с помощью команды:
gigachain install-rus-certs

Если вы не используете сертификат НУЦ Минцифры, то при создании объекта GigaChat вам нужно передать параметр verify_ssl_certs=False .

chat = GigaChat(credentials=<авторизационные_данные>, verify_ssl_certs=False)

Note

Для передачи аторизационных данных и других параметров GigaChat вы также можете настроить переменные окружения, например, GIGACHAT_CREDENTIALS, GIGACHAT_GIGACHAT_ и другие.

Использование модуля 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. Здесь же показан пример работы со стримингом.

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

Выбор модели

С помощью GigaChain вы можете обращаться к различным моделям, которые предоставляет GigaChat

Для этого передайте название модели в параметре model:

chat = GigaChat(model="GigaChat-Pro", credentials=<авторизационные_данные>, verify_ssl_certs=False)

Полный список доступных моделей можно получить с помощью метода get_models().

chat = GigaChat(credentials=<авторизационные_данные>, verify_ssl_certs=False)
chat.get_models() 

Метод выполняет запрос GET /models к GigaChat API и возвращает список с описанием доступных моделей.

Warning

Стоимость запросов к разным моделям отличается. Подробную информацию о тарификации запросов к той или иной модели вы ищите в официальной документации.

Подсчет количества токенов

Для подсчета количества токенов в запросе используйте метод get_num_tokens(str):

chat = GigaChat(credentials=<авторизационные_данные>, verify_ssl_certs=False)
chat.get_num_tokens("Сколько токенов в этой строке")

Метод выполняет запрос POST /tokens/count к GigaChat API и возвращает информацию о количестве токенов в строке.

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

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

Note

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

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

Работа с эмбеддингами

Эмбеддинг — это векторное представление слова, которое можно использовать для определения смысловой близости разных текстов. Векторное представление создается с помощью модели Embeddings.

Note

Работа с моделью Embeddings оплачивается отдельно. Подробнее — в разделе Тарифы и оплата.

Для создания эмбеддингов с помощью GigaChain используйте модуль GigaChatEmbeddings:

from langchain_community.embeddings.gigachat import GigaChatEmbeddings

embeddings = GigaChatEmbeddings(
    credentials="<авторизационные_данные>", verify_ssl_certs=False
)

Для работы с GigaChatEmbeddings используются те же авторизационные данные, что и при работе с модулем GigaChat.

Подробнее о работе с эмбеддингами и использовании их при реализации RAG-методики — в соответствующем обучающем материале.

Устранение проблем

Если у вас возникли проблемы при работе с GigaChain убедитесь, что:

  • у вас установлена последняя версия библиотеки;
  • вместо модулей GigaChain не установлены модули LangChain.

В любом случае для решения проблемы нужно удалить модули LangChain и повторно установить последние версии модулей GigaChain.

Для вывода полного списка установленных модулей используйте команду:

pip list

Note

Модули langchain_hub и langsmith не требуют удаления и переустановки.

Для удаления модулей LangChain используйте команды менеджера пакетов:

pip uninstall langchain-core
pip uninstall langchain-community
pip uninstall langchain-experimental
#Модуль langchain_openai содержит зависимости от langchain_core
pip uninstall langchain-openai
pip uninstall langchain

Warning

Если кроме представленных в примере модулей вы используете модули langgraph и langserve их также потребуется заменить на gigagraph и gigaserve, соответственно.

Для установки последних версий модулей GigaChain используйте команды менеджера пакетов:

pip install -U gigachain-core
pip install -U gigachain-community
pip install -U gigachain-experimental
pip install -U gigachain-openai
pip install -U gigachain

Работа с большими текстами

Обработка больших текстов может занимать у модели продолжительное время — 10 минут и более. Это может привести к возникновению проблем, связанных с превышением времени ожидания.

Чтобы избежать таких проблем, используйте потоковую передачу токенов (параметр streaming=True):

chat = GigaChat(credentials='<авторизационные_данные>', verify_ssl_certs=False, streaming=True)

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

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

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

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

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

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

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

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

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

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

📖 Дополнительная документация

Note

Полная документация GigaChain находится в процессе перевода. Вы можете также пользоваться документацией LangChain, поскольку GigaChain совместим с LangChain:

  • Introduction: Overview of the framework and the structure of the docs.
  • Tutorials: If you're looking to build something specific or are more of a hands-on learner, check out our tutorials. This is the best place to get started.
  • How-to guides: Answers to “How do I….?” type questions. These guides are goal-oriented and concrete; they're meant to help you complete a specific task.
  • Conceptual guide: Conceptual explanations of the key parts of the framework.
  • API Reference: Thorough documentation of every class and method.

🌐 Ecosystem

  • 🦜🛠️ LangSmith: Trace and evaluate your language model applications and intelligent agents to help you move from prototype to production.
  • 🦜🕸️ LangGraph: Create stateful, multi-actor applications with LLMs. Integrates smoothly with LangChain, but can be used without it.
  • 🦜🏓 LangServe: Deploy LangChain runnables and chains as REST APIs.

Лицензия

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

Footnotes

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

gigachain's People

Contributors

hwchase17 avatar baskaryan avatar efriis avatar eyurtsev avatar leo-gan avatar nfcampos avatar hinthornw avatar ccurme avatar mikelarg avatar vowelparrot avatar cbornet avatar jacoblee93 avatar rlancemartin avatar dev2049 avatar rai220 avatar olgavrou avatar tomasonjo avatar obi1kenobi avatar eltociear avatar agola11 avatar lkuligin avatar sepiatone avatar liugddx avatar chyroc avatar mthwrobinson avatar keenborder786 avatar maang-h avatar 169 avatar isahers1 avatar shorthillsai avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.