Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Рефакторинг документации #238

Merged
merged 5 commits into from
Jan 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 108 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,43 @@

---

> [!WARNING]
> С 29.10.2024 GigaChain изменяет способ взаимодействия с LangChain.
> Проект перестает быть ответвлением LangChain и будет предоставлять всю функциональность в рамках партнерского пакета [langchain-gigachat](https://github.com/ai-forever/langchain-gigachat/tree/master/libs/gigachat).
> [!NOTE]
> С 29.10.2024 GigaChain предоставляет всю функциональность в рамках партнерского пакета [langchain-gigachat](https://github.com/ai-forever/langchain-gigachat/tree/master/libs/gigachat).
>
> Это значительно упростит разработку и позволит развивать оригинальные решения GigaChain, а также даст доступ ко всем интеграциям, которые [поддерживает LangChain](https://python.langchain.com/docs/integrations/providers/) и обеспечит поддержку новых версий фреймворка в момент выпуска.
> Это значительно упрощает разработку, обеспечивая доступ ко всем интеграциям, которые [поддерживает LangChain](https://python.langchain.com/docs/integrations/providers/), а также поддержку новых версий фреймворка в момент выпуска.
>
> Предыдущую версию GigaChain (v0.2.x) вы можете найти в ветке [v_2.x_legacy](https://github.com/ai-forever/gigachain/tree/v_2.x_legacy).

## О GigaChain
# О GigaChain

GigaChain – это набор решений для создания приложений с использованием больших языковых моделей (*LLM*), который охватывает все этапы разработки от прототипирования и исследования, до запуска в эксплуатацию и поддержки.

Один из компонентов GigaChain — партнерский пакет [langchain-gigachat](https://github.com/ai-forever/langchain-gigachat/tree/master/libs/gigachat), который позволяет использовать [модели GigaChat](https://developers.sber.ru/docs/ru/gigachat/models) при работе с LangChain.
Также, благодаря этому пакету, вы сможете использовать GigaChat для разработки агентов с помощью [LangGraph](https://langchain-ai.github.io/langgraph/tutorials/introduction/).
В состав GigaChain входят две библиотеки для работы с [моделями GigaChat](https://developers.sber.ru/docs/ru/gigachat/models):

* langchain-gigachat — партнерский пакет LangChain, популярного open source фреймворка для разработки комплексных LLM-приложений. Библиотека позволяет использовать все возможности фреймворка и моделей GigaChat, в том числе создание агентов с помощью [LangGraph](https://langchain-ai.github.io/langgraph/tutorials/introduction/).
* [Официальная документация LangChain](https://python.langchain.com/docs/introduction/).
* [Страница партнерского пакета](https://python.langchain.com/docs/integrations/llms/gigachat/) в официальной документации LangChain.
* gigachat — обертка для [REST API GigaChat](https://developers.sber.ru/docs/ru/gigachat/api/reference/rest/gigachat-api). Библиотека управляет авторизацией запросов, упрощает отправку сообщений в модели GigaChat и предоставляет другие методы для работы с API.

Подробная информация о библиотеке — [в репозитории](https://github.com/ai-forever/gigachat).

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

## Требования

Для работы с библиотеками langchain-gigachat и gigachat вам понадобятся:

* Python версии 3.9 и выше;
* Ключ авторизации для работы с API. О том, как получить ключ авторизации — в [документации GigaChat API](https://developers.sber.ru/docs/ru/gigachat/quickstart/ind-using-api#poluchenie-avtorizatsionnyh-dannyh);
* [Сертификаты НУЦ Минцифры](https://developers.sber.ru/docs/ru/gigachat/certificates).

Если нужно, вы можете отключить проверку сертификатов. Подробнее — в примерах ниже.

## Быстрый старт

Чтобы начать работу, установите партнерский пакет:
### langchain-gigachat

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

```sh
pip install langchain-gigachat
Expand All @@ -52,14 +71,10 @@ pip install langchain-gigachat
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_gigachat.chat_models import GigaChat

# Авторизация в GigaChat
llm = GigaChat(
credentials="ключ_авторизации",
scope="GIGACHAT_API_PERS",
model="GigaChat",
# Отключает проверку наличия сертификатов НУЦ Минцифры
giga = GigaChat(
# Для авторизации запросов используйте ключ, полученный в проекте GigaChat API
credentials="ваш_ключ_авторизации",
verify_ssl_certs=False,
streaming=False,
)

messages = [
Expand All @@ -80,7 +95,44 @@ while(True):

Объект GigaChat принимает параметры:

* `credentials` — ключ_авторизации для обмена сообщениями с GigaChat API. О том, как их получить — в [официальной документации](https://developers.sber.ru/docs/ru/gigachat/quickstart/ind-using-api#poluchenie-avtorizatsionnyh-dannyh).
* `credentials` — ключ авторизации для обмена сообщениями с GigaChat API. [Подробнее о получении ключа авторизации](https://developers.sber.ru/docs/ru/gigachat/quickstart/ind-using-api#poluchenie-avtorizatsionnyh-dannyh).
* `scope` — необязательный параметр, в котором можно указать версию API. По умолчанию запросы передаются в версию для физических лиц. Возможные значения:

* `GIGACHAT_API_PERS` — версия API для физических лиц;
* `GIGACHAT_API_B2B` — доступ для ИП и юридических лиц [по предоплате](https://developers.sber.ru/docs/ru/gigachat/api/tariffs#platnye-pakety2);
* `GIGACHAT_API_CORP` — доступ для ИП и юридических лиц [по схеме pay-as-you-go](https://developers.sber.ru/docs/ru/gigachat/api/tariffs#oplata-pay-as-you-go).

* `model` — необязательный параметр, в котором можно задать [модель GigaChat](https://developers.sber.ru/docs/ru/gigachat/models). По умолчанию запросы передаются в модель GigaChat Lite (`model="GigaChat"`).
* `verify_ssl_certs` — необязательный параметр, с помощью которого можно отключить проверку [сертификатов НУЦ Минцифры](/https://developers.sber.ru/docs/ru/gigachat/certificates).
* `streaming` — необязательный параметр, который включает и отключает [потоковую генерацию токенов](https://developers.sber.ru/docs/ru/gigachat/api/response-token-streaming). По умолчанию `False`. Потоковая генерация позволяет повысить отзывчивость интерфейса программы при работе с длинными текстами.

> [!TIP]
> Спросите [чат-бот LangChain](https://chat.langchain.com/), о том, как использовать GigaChat с инструментами фреймворка.
>
> Исходный код чат-бота — в [репозитории chat-langchain](https://github.com/langchain-ai/chat-langchain).

### gigachat

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

```sh
pip install gigachat
```

Вызовите подходящий метод для запроса в API:

```py
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. [Подробнее о получении ключа авторизации](https://developers.sber.ru/docs/ru/gigachat/quickstart/ind-using-api#poluchenie-avtorizatsionnyh-dannyh).
* `scope` — необязательный параметр, в котором можно указать версию API. Возможные значения:

* `GIGACHAT_API_PERS` — версия API для физических лиц;
Expand All @@ -89,11 +141,47 @@ while(True):

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

* `model` — необязательный параметр, в котором можно явно задать [модель GigaChat](https://developers.sber.ru/docs/ru/gigachat/models). По умолчанию запросы передаются в модель `GigaChat`.
* `model` — необязательный параметр, в котором можно явно задать [модель GigaChat](https://developers.sber.ru/docs/ru/gigachat/models). По умолчанию запросы передаются в модель GigaChat Lite (значение поля `GigaChat`).
* `verify_ssl_certs` — необязательный параметр, с помощью которого можно отключить проверку [сертификатов НУЦ Минцифры](/https://developers.sber.ru/docs/ru/gigachat/certificates).
* `streaming` — необязательный параметр, который включает и отключает [потоковую генерацию токенов](https://developers.sber.ru/docs/ru/gigachat/api/response-token-streaming). Потоковая генерация позволяет повысить отзывчивость интерфейса программы при работе с длинными текстами. По умолчанию `False`.

В отличие от библиотеки langchain-gigachat, для запуска потоковой передачи используйте метод `stream()`:

```py
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]
> Больше примеров работы с библиотекой — [в репозитории](https://github.com/ai-forever/gigachat/tree/main/examples).

## Примеры

При запуске примеров могут возникать проблемы связанные с особенностями локального окружения Python.
Чтобы их избежать используйте чистое виртуальное окружение.

Список интерактивных примеров в формате блокнотов Jupyter:

* Retrieval-Augmented Generation (RAG):
* [Ответы на вопросы по заданной книге](/docs/docs_ru/cookbook/gigachat_qa.ipynb)
* [RAG с текстовым поиском на основе Yandex Search API](/cookbook/yandex_search/retriever.ipynb)
* Агенты:
* [Агент для работы с функциями](/docs/docs_ru/cookbook/gigachat_functions_agent.ipynb)
* [Агент «Продавец телефонов»](/docs/docs_ru/cookbook/agents/gigachat_phone_agent.ipynb)
* [Агент с текстовым поиском на основе Yandex Search API](/cookbook/yandex_search/tool.ipynb)
* [Агент риэлтор, с функциями GigaChat](/cookbook/realestate/realestate.ipynb)
* [Дебаты агентов с разными ролями](/cookbook/agent_debates/README.md)
* [Агент для получения рекомендаций Spotify](/docs/docs_ru/cookbook/playlists.ipynb)
* [Извлечение структурированной информации](/docs/docs_ru/cookbook/extraction.ipynb)
* Работа с изображениями:
* [Распознавание изображения](/cookbook/gigachat_vision/gigachat_vision_simple.ipynb)
* [Генерация структурированных данных на основе изображений](/cookbook/gigachat_vision/gigachat_vision.ipynb)
* [Получение изображений и видео после генерации](/cookbook/images_and_videos/gigachat_with_images.ipynb)

## Смотрите также

* [Официальная документация LangChain](https://python.langchain.com/docs/introduction/)
* [Официальная документация LangGraph](https://langchain-ai.github.io/langgraph/tutorials/introduction/)
* Документация GigaChat API:
* [Быстрый страт для физических лиц](https://developers.sber.ru/docs/ru/gigachat/individuals-quickstart)
* [Быстрый страт для ИП и юридических лиц](https://developers.sber.ru/docs/ru/gigachat/legal-quickstart)
* [Документация LangChain](https://python.langchain.com/docs/introduction/)
* [Документация LangGraph](https://langchain-ai.github.io/langgraph/tutorials/introduction/)
Loading