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

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

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

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

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

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

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

Warning

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

Установка

Библиотеку можно установить с помощью 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gigachain's Issues

Ошибка с примером.

Информация об окружении

Windows 10, Python 3.10.9, текущая версия GigaChain

К кому обратиться?

@Rai220 Konstantin Krestnikov
Добрый день !
Помогите пожалуйста, пытаюсь выполнить Ваш пример:
from langchain.chat_models.gigachat import GigaChat llm = GigaChat(credentials="BLABLABLA==") from langchain.schema import HumanMessage question = "Какой плащ был у Понтия Пилата?" llm([HumanMessage(content=question)]).content[0:200] from langchain.document_loaders import TextLoader from langchain.text_splitter import ( CharacterTextSplitter, RecursiveCharacterTextSplitter, ) loader = TextLoader("мастер_и_маргарита.txt") documents = loader.load() text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200, ) documents = text_splitter.split_documents(documents) print(f"Total documents: {len(documents)}") from langchain.vectorstores import Chroma from langchain_community.embeddings import GigaChatEmbeddings embeddings = GigaChatEmbeddings(one_by_one_mode=True, _debug_delay=0.005) from chromadb.config import Settings from langchain.vectorstores import Chroma db = Chroma.from_documents( documents, embeddings, client_settings=Settings(anonymized_telemetry=False), ) docs = db.similarity_search(question, k=4) len(docs) print(f"... {str(docs[0])[620:800]} ...") from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type(llm, retriever=db.as_retriever()) qa_chain({"query": question})
И получаю ошибку:
Profanity field is deprecated. Use 'profanity_check' instead. Total documents: 1 Traceback (most recent call last): File "F:\Work\Giga\Gigatest_01.py", line 33, in <module> db = Chroma.from_documents( File "C:\Python3_10_9\lib\site-packages\langchain_community\vectorstores\chroma.py", line 771, in from_documents return cls.from_texts( File "C:\Python3_10_9\lib\site-packages\langchain_community\vectorstores\chroma.py", line 729, in from_texts chroma_collection.add_texts( File "C:\Python3_10_9\lib\site-packages\langchain_community\vectorstores\chroma.py", line 275, in add_texts embeddings = self._embedding_function.embed_documents(texts) File "C:\Python3_10_9\lib\site-packages\langchain_community\embeddings\gigachat.py", line 124, in embed_documents for embedding in self._client.embeddings(texts=[text], model=model).data: File "C:\Python3_10_9\lib\site-packages\gigachat\client.py", line 214, in embeddings return self._decorator( File "C:\Python3_10_9\lib\site-packages\gigachat\client.py", line 202, in _decorator return call() File "C:\Python3_10_9\lib\site-packages\gigachat\client.py", line 215, in <lambda> lambda: post_embeddings.sync(self._client, access_token=self.token, input_=texts, model=model) File "C:\Python3_10_9\lib\site-packages\gigachat\api\post_embeddings.py", line 71, in sync return _build_response(response) File "C:\Python3_10_9\lib\site-packages\gigachat\api\post_embeddings.py", line 57, in _build_response raise AuthenticationError(response.url, response.status_code, response.content, response.headers) gigachat.exceptions.AuthenticationError: (URL('https://gigachat.devices.sberbank.ru/api/v1/embeddings'), 401, b'{"status":401,"message":"Unauthorized"}\n', Headers([('server', 'nginx'), ('date', 'Sat, 13 Jan 2024 20:10:08 GMT'), ('content-type', 'application/json; charset=utf-8'), ('content-length', '40'), ('connection', 'keep-alive'), ('x-request-id', '52c28f4b-9f96-4e09-a610-181e59e16fa0'), ('x-session-id', '0c1e6a1f-6363-408f-9d5d-b78e799d0a81'), ('allow', 'GET, POST'), ('strict-transport-security', 'max-age=31536000; includeSubDomains'), ('allow', 'GET, POST'), ('strict-transport-security', 'max-age=31536000; includeSubDomains')]))

Вот не понимаю, что не так - всё как у Вас, токен рабочий,
Если с ним же запускать код:
from langchain.schema import HumanMessage, SystemMessage from langchain.chat_models.gigachat import GigaChat chat = GigaChat(credentials=GigaChat(credentials="BLABLABLA==") 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)
То всё работает - прошу хоть какой-то помощи.

Дополнительная информация

  • Официальных примеров (notebooks)/скриптов
  • Собственных или доработанных скриптов

Компоненты

  • LLMs/Chat Models
  • Embedding Models
  • Prompts / Prompt Templates / Prompt Selectors
  • Output Parsers
  • Document Loaders
  • Vector Stores / Retrievers
  • Memory
  • Agents / Agent Executors
  • Tools / Toolkits
  • Chains
  • Callbacks/Tracing
  • Async

Воспроизведение ошибки

from langchain.chat_models.gigachat import GigaChat
llm = GigaChat(credentials="ZWMwYmQwNDctZTdiYi00OTY4LTk5ODktNDZmMmQ2ZDAxYTk5OjgzNTgzMTk0LTEyN2QtNDE1ZS05ZTRiLTdlZmI0NTg0NTZiMA==")
from langchain.schema import HumanMessage
question = "Какой плащ был у Понтия Пилата?"
llm([HumanMessage(content=question)]).content[0:200]
from langchain.document_loaders import TextLoader
from langchain.text_splitter import (
CharacterTextSplitter,
RecursiveCharacterTextSplitter,
)
loader = TextLoader("мастер_и_маргарита.txt")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
)
documents = text_splitter.split_documents(documents)
print(f"Total documents: {len(documents)}")
from langchain.vectorstores import Chroma
from langchain_community.embeddings import GigaChatEmbeddings
embeddings = GigaChatEmbeddings(one_by_one_mode=True, _debug_delay=0.005)
from chromadb.config import Settings
from langchain.vectorstores import Chroma
db = Chroma.from_documents(
documents,
embeddings,
client_settings=Settings(anonymized_telemetry=False),
)
docs = db.similarity_search(question, k=4)
len(docs)
print(f"... {str(docs[0])[620:800]} ...")
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(llm, retriever=db.as_retriever())
qa_chain({"query": question})

Ожидаемое поведение

Ожидал ответ на вопрос. Но почему то ошибка авторизации

Промпт генерируется не правильно (или парсится)

Информация об окружении

python==3.10
gigachain==0.0.322

К кому обратиться?

@Rai220

Дополнительная информация

  • Официальных примеров (notebooks)/скриптов
  • Собственных или доработанных скриптов

Компоненты

  • LLMs/Chat Models
  • Embedding Models
  • Prompts / Prompt Templates / Prompt Selectors
  • Output Parsers
  • Document Loaders
  • Vector Stores / Retrievers
  • Memory
  • Agents / Agent Executors
  • Tools / Toolkits
  • Chains
  • Callbacks/Tracing
  • Async

Воспроизведение ошибки

mrkl = initialize_agent(tools, self._llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True, handle_parsing_errors=True)
mrkl.run(message)

При инициализации mrkl генерирует промпт, где просится писать Final answer с маленькой буквы, парсер парсит Final Answer с большой буквы. Возникает ошибка. Локально исправил -- все работает. Исправьте пж

https://github.com/ai-forever/gigachain/blob/master/libs/langchain/langchain/agents/mrkl/prompt.py

Ожидаемое поведение

Ожидается, чтобы агент работал

Unicode decode error при импорте from langchain.agents

Пытаюсь импортировать любую вещь из langchain.agents и получаю такую ошибку. В чем может быть причина?

Process SpawnProcess-5:
Traceback (most recent call last):
  File "C:\Python311\Lib\multiprocessing\process.py", line 314, in _bootstrap
    self.run()
  File "C:\Python311\Lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\uvicorn\_subprocess.py", line 78, in subprocess_started
    target(sockets=sockets)
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\uvicorn\server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\asyncio\runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\asyncio\base_events.py", line 650, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\uvicorn\server.py", line 69, in serve
    await self._serve(sockets)
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\uvicorn\server.py", line 76, in _serve
    config.load()
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\uvicorn\config.py", line 433, in load
    self.loaded_app = import_from_string(self.app)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\uvicorn\importer.py", line 19, in import_from_string
    module = importlib.import_module(module_str)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\api\main.py", line 15, in <module>
    from chat import ask_question, getChatHistory
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\api\chat.py", line 11, in <module>
    from langchain.agents import Agent
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\langchain\agents\__init__.py", line 44, in <module>
    from langchain.agents.agent import (
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\langchain\agents\agent.py", line 50, in <module>
    from langchain.chains.base import Chain
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\langchain\chains\__init__.py", line 53, in <module>
    from langchain.chains.llm_summarization_checker.base import LLMSummarizationCheckerChain
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\langchain\chains\llm_summarization_checker\base.py", line 22, in <module>
    REVISED_SUMMARY_PROMPT = PromptTemplate.from_file(PROMPTS_DIR / "revise_summary.txt")
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\hooki\Documents\coffeeface\src\ai-chat\.venv\Lib\site-packages\langchain_core\prompts\prompt.py", line 205, in from_file
    template = f.read()
               ^^^^^^^^
  File "C:\Python311\Lib\encodings\cp1251.py", line 24, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 459: character maps to <undefined>

Сравнение отечественных и мировых моделей: нужен аналог лидерборда Hugging Face!

Проблема, которую вы хотите обсудить.

Привет, уважаемая команда!

Мы бы хотели предложить создать локальный лидерборд для сравнения моделей в России, аналогичный лидерборду Hugging Face. Этот лидерборд поможет проводить сравнительную оценку между отечественными моделями и моделями с открытым исходным кодом, доступными за границей.

Наши цели:

  1. Сравнивать производительность наших моделей с другими отечественными решениями.
  2. Сравнивать наши модели с моделями с открытым исходным кодом из разных частей мира.
  3. Предоставлять инсайты и данные, которые помогут нам улучшить наши модели.

Мы верим, что создание подобного лидерборда способствует прозрачности, развитию искусственного интеллекта и обработки естественного языка в России, а также обогатит общественное обсуждение. На данный момент, несмотря на существующий лидерборд от Hugging Face, отечественные модели отсутствуют на нем. Мы исследуем различные варианты создания такой платформы и будем благодарны за ваши идеи, комментарии и советы в этом вопросе.

Большое спасибо за внимание, и мы с нетерпением ждем обсуждения этой идеи и совместной работы!

Предложение:

Создание локального лидерборда и вовлечение экспертов

Ошибка при запуске агента с функциями на базе GigaChat

Description: Ubuntu 22.04.3 LTS
Python 3.10.12
gigachain 0.1.4
gigachain-community 0.0.16
gigachain-core 0.1.17
gigachat 0.1.16

@Rai220 здравствуйте
Пытаюсь запускать код из примера https://github.com/ai-forever/gigachain/blob/master/docs/docs/modules/agents/how_to/gigachat_agent.ipynb

from langchain_community.chat_models import GigaChat
from langchain.tools import tool
import pyfiglet
from langchain.agents import AgentExecutor, create_gigachat_functions_agent
from langchain.schema import HumanMessage, SystemMessage, AIMessage

@tool
def draw_bunner(number: str) -> None:
    """Рисует баннер с текстом

    Args:
        number (str): Число, который нужно нарисовать на баннере
    """
    pyfiglet.print_figlet(number, font="epic")

giga = GigaChat(credentials=***", verify_ssl_certs=False, model="GigaChat-Plus")
new_tools = [draw_bunner]
agent = create_gigachat_functions_agent(giga, new_tools)
agent_executor = AgentExecutor(
    agent=agent,
    tools=new_tools,
    verbose=True,
)

agent_executor.invoke(
    {"input": "Найди курс биткоина в долларах и нарисуй это число на банере."}
)["output"]

В ответ получаю HTTP 422
Пробовал указывать разные модели, результат один
Стектрейс:

> Entering new AgentExecutor chain...
Traceback (most recent call last):
  File "/home/roman/GIT/hass/gigachain/1test-model.py", line 25, in <module>
    agent_executor.invoke(
  File "/usr/local/lib/python3.10/dist-packages/langchain/chains/base.py", line 162, in invoke
    raise e
  File "/usr/local/lib/python3.10/dist-packages/langchain/chains/base.py", line 156, in invoke
    self._call(inputs, run_manager=run_manager)
  File "/usr/local/lib/python3.10/dist-packages/langchain/agents/agent.py", line 1391, in _call
    next_step_output = self._take_next_step(
  File "/usr/local/lib/python3.10/dist-packages/langchain/agents/agent.py", line 1097, in _take_next_step
    [
  File "/usr/local/lib/python3.10/dist-packages/langchain/agents/agent.py", line 1097, in <listcomp>
    [
  File "/usr/local/lib/python3.10/dist-packages/langchain/agents/agent.py", line 1125, in _iter_next_step
    output = self.agent.plan(
  File "/usr/local/lib/python3.10/dist-packages/langchain/agents/agent.py", line 387, in plan
    for chunk in self.runnable.stream(inputs, config={"callbacks": callbacks}):
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 2424, in stream
    yield from self.transform(iter([input]), config, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 2411, in transform
    yield from self._transform_stream_with_config(
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 1497, in _transform_stream_with_config
    chunk: Output = context.run(next, iterator)  # type: ignore
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 2375, in _transform
    for output in final_pipeline:
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 1035, in transform
    for chunk in input:
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 4145, in transform
    yield from self.bound.transform(
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/runnables/base.py", line 1045, in transform
    yield from self.stream(final, config, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/language_models/chat_models.py", line 250, in stream
    raise e
  File "/usr/local/lib/python3.10/dist-packages/langchain_core/language_models/chat_models.py", line 234, in stream
    for chunk in self._stream(
  File "/usr/local/lib/python3.10/dist-packages/langchain_community/chat_models/gigachat.py", line 235, in _stream
    for chunk in self._client.stream(payload):
  File "/usr/local/lib/python3.10/dist-packages/gigachat/client.py", line 246, in stream
    for chunk in stream_chat.sync(self._client, chat=chat, access_token=self.token):
  File "/usr/local/lib/python3.10/dist-packages/gigachat/api/stream_chat.py", line 90, in sync
    _check_response(response)
  File "/usr/local/lib/python3.10/dist-packages/gigachat/api/stream_chat.py", line 79, in _check_response
    raise ResponseError(response.url, response.status_code, b"", response.headers)
gigachat.exceptions.ResponseError: (URL('https://gigachat.devices.sberbank.ru/api/v1/chat/completions'), 422, b'', Headers([('server', 'nginx'), ('date', 'Fri, 16 Feb 2024 17:33:26 GMT'), ('content-type', 'application/json; charset=utf-8'), ('content-length', '70'), ('connection', 'keep-alive'), ('access-control-allow-credentials', 'true'), ('access-control-allow-headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization'), ('access-control-allow-methods', 'GET, POST, DELETE, OPTIONS'), ('access-control-allow-origin', 'https://beta.saluteai.sberdevices.ru'), ('x-request-id', 'b05d648f-ac12-4e13-86b3-dfcc782ed7bd'), ('x-session-id', '625022d4-55a7-417e-86e8-47432f94efd6'), ('allow', 'GET, POST'), ('strict-transport-security', 'max-age=31536000; includeSubDomains'), ('allow', 'GET, POST'), ('strict-transport-security', 'max-age=31536000; includeSubDomains')]))

DOC: Добавить подробности в описание к авторизации GigaChat

Проблема с существующей документацией:

https://github.com/ai-forever/gigachain

Запрос на доработку:

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

chat = GigaChat(credentials=..., verify_ssl_certs=False)

Более подробно написать про Авторизацию в API. Промучился полдня, так и не понял как авторизаваться. Что нужно использовать: Client ID, или Client Secret, или Авторизационные данные Bearer. Что за переменные (credentials, user, password, access_token).
Укажите что credentials - это токен авторизации который можно получить на сайте https://developers.sber.ru/studio/workspaces/
Спасибо.

DOC: Битые ссылки

Проблема с существующей документацией:

1.https://github.com/ai-forever/gigachain/blob/4f795065c029310a59a5828ae6a496b424aadc82/docs/extras/integrations/chat/gigachat.ipynb ("Подробнее об этом вы можете прочитать в этом документе"))
2.https://github.com/ai-forever/gigachain/tree/4f795065c029310a59a5828ae6a496b424aadc82/docs/extras/integrations/chat Авторизационные данные в надежном месте. Сохранение ключей
)
3. https://github.com/ai-forever/gigachain/tree/4f795065c029310a59a5828ae6a496b424aadc82/docs/extras/integrations/chat ("Сгенерировать новый Client Secret"))
4. https://github.com/ai-forever/gigachain/blob/4f795065c029310a59a5828ae6a496b424aadc82/docs/extras/use_cases/summarization.ipynb (подробнее см. здесь))"

Запрос на доработку:

По всему репозиторию куча недействительных ссылок

Failed to resolve 'openaipublic.blob.core.windows.net' ([Errno -3] Temporary failure in name resolution)"))

Приветствую!

Во время вызова эмбеддингов через GigaChatEmbeddings получил такую странную ошибку:

HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /gpt-2/encodings/main/vocab.bpe (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f5d90353640>: Failed to resolve 'openaipublic.blob.core.windows.net' ([Errno -3] Temporary failure in name resolution)"))

Для чего используется этот хост?
openaipublic.blob.core.windows.ne:443 /gpt-2/encodings/main/vocab.bpe

Реализовать подсчет израсходованных токенов в GigaChat

Feature request

Реализовать подсчет токенов как для OpenAI https://python.langchain.com/docs/modules/model_io/models/llms/token_usage_tracking

Motivation

Нужно понимать сколько при использовании GigaChat было использовано токенов и в будущем ресурсов.

Your contribution

Предлагаю адаптировать код

class OpenAICallbackHandler(BaseCallbackHandler):

под эти цели.
За исключение валюты :)

Ошибка 500 при создании эмбеддингов

Здравствуйте, получаю такую ошибку при создании эмбеддингов, в чем может быть прооблема?

https://gigachat.devices.sberbank.ru/api/v1/embeddings'), 500, b'{"status":500,"message":"Internal Server Error"

Текст, который отправляю:

С нами вы сможете полностью организовать работу компании: <a href="https://onboarding.go.example.ru/structure/" id="sLWWgEcP09RTm45bLX_Sl" data-node-name="Добавьте"> Добавьте </a> пользователей в систему. Создайте <a href="Процессы" id="cYUQiKktpmLtPKLUMxuEO" data-node-name="Процессы"> Процессы </a> и запустите по ним <a href="https://onboarding.go.example.ru/tasks" id="xoW6JGjYsIPt0X-6DVXA1" data-node-name="Задачи"> Задачи </a>. Используйте <a href="https://onboarding.go.example.ru/handbooks" id="n0zU4F4Bh8_NMb-giJV8B" data-node-name="Справочники"> Справочники </a>, как собственные базы данных. Сгруппируйте задачи в <a href="https://onboarding.go.example.ru/projects" id="QE1KI2GyVfcV4a-2EtN4x" data-node-name="Проекты"> Проекты </a>. Соберите полезную информацию в <a href="https://onboarding.go.example.ru/spaces" id="1eFK-JR6RTeSubWYuVCfe" data-node-name="Базе знаний"> Базе знаний </a> . Используйте <a href="https://onboarding.go.example.ru/conference?tab=9&tabId=&sidebarTab=AI" id="8O0Fac-SYwbaruX5vD2Db" data-node-name="AI-помощника"> AI-помощника </a> для быстрого доступа к информации. Общайтесь с помощью модуля <a href="https://onboarding.go.example.ru/conference" id="7226l7TDG5-X-1Gf1yCkT" data-node-name="Коммуникации"> Коммуникации </a> . Создавайте анкеты и опросы в <a href="Формах" id="Ht7TLauND9AHzIsLccecP" data-node-name="Формах"> Формах </a> . Храните данные о сотрудниках в модуле <a href="https://onboarding.go.example.ru/structure" id="0eTYDHHXnaC6CYN_MKBpK" data-node-name="Люди"> Люди </a> . Считайте <a href="https://onboarding.go.example.ru/labor-costs" id="HZ25nuH4PT3a2BELlXP-Q" data-node-name="Трудозатраты"> Трудозатраты </a> и анализируйте <a href="https://onboarding.go.example.ru/reports" id="blCw3_X7xy6nVizusfLLT" data-node-name="Отчеты"> Отчеты </a>. Для быстрого старта и легкой настройки, используйте интерактивную инструкцию.

Проблема с сериализацией GigaChat

System Info

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

Who can help?

No response

Information

  • The official example notebooks/scripts
  • My own modified scripts

Related Components

  • LLMs/Chat Models
  • Embedding Models
  • Prompts / Prompt Templates / Prompt Selectors
  • Output Parsers
  • Document Loaders
  • Vector Stores / Retrievers
  • Memory
  • Agents / Agent Executors
  • Tools / Toolkits
  • Chains
  • Callbacks/Tracing
  • Async

Reproduction

giga = GigaChat(verify_ssl_certs=False, temperature=0.5)
chain = load_summarize_chain(giga, chain_type="map_reduce")
chain.save("summary_chain.json")

В summary_chain не будет флага verify_ssl_certs и temperature

Expected behavior

Параметры должны сохраняться.

Test issue

Feature request

Motivation

Your contribution

DOC: Опечатка в названии пакета в Readme.md

Checklist

  • I added a very descriptive title to this issue.
  • I included a link to the documentation page I am referring to (if applicable).

Проблема с существующей документацией:

https://github.com/ai-forever/gigachain#:~:text=pip%20install%20%2DU%20gigahain_openai

Запрос на доработку:

допущена опечатка в названии пакета "gigachain_openai" в Readme.md (пропущена буква c):

pip install -U gigahain_openai

Need documentation in English ???? DOC: <Укажите развернутый заголовок после префикса 'DOC: '>

Checklist

  • I added a very descriptive title to this issue.
  • I included a link to the documentation page I am referring to (if applicable).

Проблема с существующей документацией:

This repository is many commits ahead of the main LangChain. It is difficult to see what changes or advantages or disadvantages exist in this branch over the core LangChain branch.

What is the best way to translate all documentation so that the changes and enhancements are transparent?

Запрос на доработку:

Need English translation to make sense of what's being provided. See this page itself !! The questions are in Cyrillic.

WARNING:langchain_community.chat_models.gigachat:Giga generation stopped with reason: blacklist

Контрольный список

  • Добавлен исчерпывающий заголовок.
  • Приложена ссылка на страницу, на которой обнаружена проблема (если применимо).

Проблема с существующей документацией:

Screenshot 2024-04-09 at 21 43 30 Довольно странные ответы от LLM, по каким параментам оно вообще в blacklist попадает?

Запрос на доработку:

No response

DOC: битая ссылка в README на пример "Агент-менеджер по продажам..."

Контрольный список

  • Добавлен исчерпывающий заголовок.
  • Приложена ссылка на страницу, на которой обнаружена проблема (если применимо).

Проблема с существующей документацией:

Битая ссылка в README: https://github.com/ai-forever/gigachain/blob/master/README.md

image

Агент-менеджер по продажам с автоматическим поиском по каталогу и формированием заказа

image

Запрос на доработку:

No response

ImportError when importing 'GigaChat' from 'langchain.chat_models'

System Info

I am encountering an ImportError when trying to import the 'GigaChat' class from the 'langchain.chat_models' module in my project. The specific error message is as follows:

ImportError: cannot import name 'GigaChat' from partially initialized module 'langchain.chat_models'

It seems that there might be a circular import issue or some other problem with the module's initialization.

I'm using Python 3.8.
I have checked for circular dependencies in my code and made sure that there are no circular imports within the 'langchain.chat_models' module or its dependencies.
I have tried importing the 'GigaChat' class locally within a specific function or method, but the import error still persists.
I have also verified that the module is installed correctly and accessible in the Python environment.

Any assistance in resolving this issue would be greatly appreciated. Please let me know if there is any additional information or code snippets I can provide to help diagnose and resolve the problem.

Thank you for your attention to this matter.

Who can help?

No response

Information

  • The official example notebooks/scripts
  • My own modified scripts

Related Components

  • LLMs/Chat Models
  • Embedding Models
  • Prompts / Prompt Templates / Prompt Selectors
  • Output Parsers
  • Document Loaders
  • Vector Stores / Retrievers
  • Memory
  • Agents / Agent Executors
  • Tools / Toolkits
  • Chains
  • Callbacks/Tracing
  • Async

Reproduction

Attempt to import the 'GigaChat' class from the 'langchain.chat_models' module.
Observe the ImportError with the given error message.

Expected behavior

I expect to be able to import the 'GigaChat' class without any import errors.

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.