GithubHelp home page GithubHelp logo

anstkosh / gigachain Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ai-forever/gigachain

1.0 0.0 0.0 215.33 MB

⚡ Фреймворк для создания комплексных приложений с LLM ⚡

License: MIT License

Shell 0.15% JavaScript 0.01% Python 62.14% XSLT 0.07% TeX 0.01% Makefile 0.22% HTML 0.03% Jupyter Notebook 37.16% Dockerfile 0.02% MDX 0.21%

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).

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

    Пример — CAMEL агент для разработки программ

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

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

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

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

Установка

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

pip install gigachain

Миграция с LangChain

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

pip uninstall langchain langchain_experimental langchain_core langchain_community

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

pip install gigachain

Работа с 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-методики — в разделе Ответы на вопросы с помощью 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.

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

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

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

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

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

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

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

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

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

Note

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

You can also check out the full API Reference docs.

🌐 Ecosystem

  • 🦜🛠️ LangSmith: Tracing and evaluating your language model applications and intelligent agents to help you move from prototype to production.
  • 🦜🕸️ LangGraph: Creating stateful, multi-actor applications with LLMs, built on top of (and intended to be used with) LangChain primitives.
  • 🦜🏓 LangServe: Deploying LangChain runnables and chains as REST APIs.

Лицензия

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

Footnotes

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

gigachain's People

Contributors

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

Stargazers

 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.