Skip to content

Commit

Permalink
Add support for choosing models
Browse files Browse the repository at this point in the history
- Add support for choosing models;
- Support max_tokens;
- Add ability to skip auth validation (for testing purposes);
- Added EN readme
  • Loading branch information
gritaro committed Feb 18, 2024
1 parent 8976efe commit 6653779
Show file tree
Hide file tree
Showing 11 changed files with 504 additions and 221 deletions.
97 changes: 97 additions & 0 deletions README-ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/gritaro/gigachain/blob/main/README.md)
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/gritaro/gigachain/blob/main/README-ru.md)
<br />
<div align="center">

<a href="https://github.com/ai-forever/gigachain">
<img src="https://raw.githubusercontent.com/gritaro/gigachain/main/static/logo.png" alt="Logo" width="80" height="80">
</a>

<h1 align="center">🦜️🔗 GigaChain (GigaChat + LangChain)</h1>
</div>

# Компонент GigaChain для Home Assistant
[![hacs_badge](https://img.shields.io/badge/HACS-Custom-orange.svg)](https://github.com/custom-components/hacs)
[![HACS Action](https://github.com/gritaro/gigachain/actions/workflows/hacs.yaml/badge.svg)](https://github.com/gritaro/gigachain/actions/workflows/hacs.yaml)
[![Validate with hassfest](https://github.com/gritaro/gigachain/actions/workflows/hassfest.yaml/badge.svg)](https://github.com/gritaro/gigachain/actions/workflows/hassfest.yaml)
[![Generic badge](https://img.shields.io/github/v/release/gritaro/gigachain)](https://github.com/gritaro/gigachain)
[![Downloads for latest release](https://img.shields.io/github/downloads/gritaro/gigachain/latest/total.svg)](https://github.com/gritaro/gigachain/releases/latest)
[![Github All Releases](https://img.shields.io/github/downloads/gritaro/gigachain/total.svg)](https://github.com/gritaro/gigachain/releases)

Компонент реализует диалоговую систему Home Assistant для использования с языковыми моделями, поддерживаемыми фреймворком GigaChain.
В настоящее время поддерживаются интеграции с LMM:
* [GigaChat](#GigaChat) (<a href="https://developers.sber.ru/docs/ru/gigachat/overview">русскоязычная (но не только) нейросеть от Сбера</a>)
* [YandexGPT](#YandexGPT)
* [OpenAI](#OpenAI) ака ChatGPT (не тестируется)

## Установка
Устанавливается как и любая HACS интеграция.

### Необходимые требования
Для использования интеграции вам понадобится Home Assistant с установленным [HACS](https://hacs.xyz/)

### Установка с использованием HACS
Найдите GigaChain в магазине HACS. Если интеграция не находится в магазине HACS, вы можете [добавить этот url как пользовательский репозиторий HACS](https://hacs.xyz/docs/faq/custom_repositories).

[![hacs_badge](https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=for-the-badge)](https://github.com/gritaro/gigachain)

Перезапустите Home Assistant.

## Добавление интеграции

[![Open your Home Assistant instance and start setting up a new integration of a specific brand.](https://my.home-assistant.io/badges/brand.svg)](https://my.home-assistant.io/redirect/brand/?brand=+GigaChain)

После добавления настройте интеграцию.

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

> [!NOTE]
> О том как получить авторизационные данные для доступа к GigaChat читайте в [официальной документации](https://developers.sber.ru/docs/ru/gigachat/api/integration).
>
>
> [!NOTE]
> Сертификаты НУЦ Минцифры устанавливать не нужно
>
<img src="https://raw.githubusercontent.com/gritaro/gigachain/main/static/auth_data.jpeg" alt="Authorization data" width="40%">

### YandexGPT
<a href="https://cloud.yandex.ru/ru/docs/yandexgpt/quickstart">Быстрый старт</a>

Создайте <a href="https://cloud.yandex.com/ru/docs/iam/operations/sa/create">сервисный аккаунт</a> с ролью `ai.languageModels.user`.
Для создания аккаунта потребуется привязка карты. С карты будет снята и возвращена символическая сумма (11 RUB).

Создайте <a href="https://cloud.yandex.com/ru/docs/iam/operations/api-key/create">API ключ</a>.
Идентификатор каталога (Folder ID) можно узнать пройдя по <a href="https://console.cloud.yandex.com/folders">ссылке</a>.

### OpenAI
Для генерации ключа проследуйте по ссылке https://platform.openai.com/account/api-keys

## Конфигурация

* _Темплейт промпта_ (template, Home Assistant <a href=https://www.home-assistant.io/docs/configuration/templating/>`template`</a>)

Системное сообщение, настраивающее модель и задающее исходное поведение.
Значение по умолчанию является лишь примером, взятым из офицальной интеграции <a href="https://github.com/home-assistant/core/blob/dev/homeassistant/components/openai_conversation/const.py#L5">OpenAI Conversation</a>.
Рекомендуется его изменить под собственные нужды.

* _Модель_ (model, `string`)

Модели генерации текста в рамках выбранной LLM. Каждая модель может иметь свои тарифы.

* _Температура_ (temperature, `float`)

Температура выборки. Значение температуры должно быть не меньше ноля. Чем выше значение, тем более случайным будет ответ модели. При значениях температуры больше двух, набор токенов в ответе модели может отличаться избыточной случайностью.
Значение по умолчанию зависит от выбранной модели.

* Максимум токенов (max_tokens, int)

Максимальное количество токенов, которые будут использованы для создания ответов.

## Использование в качестве диалоговой системы
Создайте и настройте новый голосовой ассистент:

<img src="https://raw.githubusercontent.com/gritaro/gigachain/main/static/voice-assistant.jpeg" alt="Voice Assistant">
82 changes: 41 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
[![en](https://img.shields.io/badge/lang-en-green.svg)](https://github.com/gritaro/gigachain/blob/main/README.md)
[![ru](https://img.shields.io/badge/lang-ru-red.svg)](https://github.com/gritaro/gigachain/blob/main/README-ru.md)
<br />
<div align="center">

Expand All @@ -8,85 +10,83 @@
<h1 align="center">🦜️🔗 GigaChain (GigaChat + LangChain)</h1>
</div>

# Компонент GigaChain для Home Assistant
# GigaChain integration with Home Assistant
[![hacs_badge](https://img.shields.io/badge/HACS-Custom-orange.svg)](https://github.com/custom-components/hacs)
[![HACS Action](https://github.com/gritaro/gigachain/actions/workflows/hacs.yaml/badge.svg)](https://github.com/gritaro/gigachain/actions/workflows/hacs.yaml)
[![Validate with hassfest](https://github.com/gritaro/gigachain/actions/workflows/hassfest.yaml/badge.svg)](https://github.com/gritaro/gigachain/actions/workflows/hassfest.yaml)
[![Generic badge](https://img.shields.io/github/v/release/gritaro/gigachain)](https://github.com/gritaro/gigachain)
[![Downloads for latest release](https://img.shields.io/github/downloads/gritaro/gigachain/latest/total.svg)](https://github.com/gritaro/gigachain/releases/latest)
[![Github All Releases](https://img.shields.io/github/downloads/gritaro/gigachain/total.svg)](https://github.com/gritaro/gigachain/releases)

Компонент реализует диалоговую систему Home Assistant для использования с языковыми моделями, поддерживаемыми фреймворком GigaChain.
В настоящее время поддерживаются интеграции с LMM:
* [GigaChat](#GigaChat) (<a href="https://developers.sber.ru/docs/ru/gigachat/overview">русскоязычная нейросеть от Сбера</a>)
This integration implements Voice Assistant for Home Assistant using GigaChain framework.
Currently supported LMMs:
* [GigaChat](#GigaChat) (<a href="https://developers.sber.ru/docs/ru/gigachat/overview">Sber LLM</a>)
* [YandexGPT](#YandexGPT)
* [OpenAI](#OpenAI) ака ChatGPT (не тестируется)
* [OpenAI](#OpenAI) aka ChatGPT (not tested)

## Установка
Устанавливается как и любая HACS интеграция.
## Installation
Install it like any other HACS integration.

### Необходимые требования
Для использования интеграции вам понадобится Home Assistant с установленным [HACS](https://hacs.xyz/)
### Requirements
Home Assistant with installed [HACS](https://hacs.xyz/)

### Установка с использованием HACS
Найдите GigaChain в магазине HACS. Если интеграция не находится в магазине HACS, вы можете [добавить этот url как пользовательский репозиторий HACS](https://hacs.xyz/docs/faq/custom_repositories).
### Installation with HACS
Find GigaChain in HACS store. If you can't find it in store, you could [add this url as HACS custom repository](https://hacs.xyz/docs/faq/custom_repositories).

[![hacs_badge](https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=for-the-badge)](https://github.com/gritaro/gigachain)

Перезапустите Home Assistant.
Restart Home Assistant.

## Добавление интеграции
## Add Integration

[![Open your Home Assistant instance and start setting up a new integration of a specific brand.](https://my.home-assistant.io/badges/brand.svg)](https://my.home-assistant.io/redirect/brand/?brand=+GigaChain)

После добавления настройте интеграцию.

## Настройки
After adding, configure integration.

## Settings
### GigaChat
### Авторизация запросов к GigaChat
Для авторизации запросов к GigaChat вам понадобится получить *авторизационные данные* для работы с GigaChat API.
### GigaChat Authorization
You need to register at https://developers.sber.ru/studio and get an "authorization data" key.

> [!NOTE]
> О том как получить авторизационные данные для доступа к GigaChat читайте в [официальной документации](https://developers.sber.ru/docs/ru/gigachat/api/integration).
> You can find more details in GigaChat [official documentation](https://developers.sber.ru/docs/en/gigachat/api/integration).
>
<img src="https://raw.githubusercontent.com/gritaro/gigachain/main/static/auth_data.jpeg" alt="Authorization data" width="40%">

### YandexGPT
<a href="https://cloud.yandex.ru/ru/docs/yandexgpt/quickstart">Быстрый старт</a>
<a href="https://cloud.yandex.ru/en/docs/yandexgpt/quickstart">Quick start</a>

Создайте <a href="https://cloud.yandex.com/en/docs/iam/operations/sa/create">сервисный аккаунт</a> с ролью `ai.languageModels.user`
Для создания аккаунта потребуется привязка карты.
Создайте <a href="https://cloud.yandex.com/en/docs/iam/operations/api-key/create">API ключ</a>
Идентификатор каталога (Folder ID) можно узнать пройдя по <a href="https://console.cloud.yandex.com/folders">ссылке</a>
Create <a href="https://cloud.yandex.com/en/docs/iam/operations/sa/create">service account</a> with role `ai.languageModels.user`.
Create <a href="https://cloud.yandex.com/en/docs/iam/operations/api-key/create">API key</a>.
You can find Folder ID using this <a href="https://console.cloud.yandex.com/folders">link</a>.

### OpenAI
Для генерации ключа проследуйте по ссылке https://platform.openai.com/account/api-keys

## Конфигурация
Create API key here https://platform.openai.com/account/api-keys

* _Темплейт промпта_ (template, Home Assistant <a href=https://www.home-assistant.io/docs/configuration/templating/>`template`</a>)
## Configuration

Системное сообщение, настраивающее модель и задающее исходное поведение.
Значение по умолчанию является лишь примером, взятым из офицальной интеграции <a href="https://github.com/home-assistant/core/blob/dev/homeassistant/components/openai_conversation/const.py#L5">OpenAI Conversation</a>
Рекомендуется его изменить под собственные нужды.
* _Prompt template_ (template, Home Assistant <a href=https://www.home-assistant.io/docs/configuration/templating/>`template`</a>)

* _Модель_ (model, `string`)
The starting text for the AI language model to generate new text from.
This text can include information about your Home Assistant instance, devices, and areas and is written using [Home Assistant Templating](https://www.home-assistant.io/docs/configuration/templating/).
Default value comes from official integration <a href="https://github.com/home-assistant/core/blob/dev/homeassistant/components/openai_conversation/const.py#L5">OpenAI Conversation</a>

Модели генерации текста в рамках выбранной LLM. Каждая модель может иметь свои тарифы.
В настоящее время выбор модели не поддерживается.
* _Model_ (model, `string`)

* _Температура_ (temperature, `float`)
Language model is used for text generation

Температура выборки. Значение температуры должно быть не меньше ноля. Чем выше значение, тем более случайным будет ответ модели. При значениях температуры больше двух, набор токенов в ответе модели может отличаться избыточной случайностью.
Значение по умолчанию зависит от выбранной модели
* _Temperature_ (temperature, `float`)

* Максимум токенов (max_tokens, int)
A value that determines the level of creativity and risk-taking the model should use when generating text.
A higher temperature means the model is more likely to generate unexpected results, while a lower temperature results in more deterministic results.

* Max Tokens (max_tokens, int)

Максимальное количество токенов, которые будут использованы для создания ответов.
В настоящее время не поддерживается, используются настройки модели по умолчанию.
The maximum number of words or “tokens” that the AI model should generate in its completion of the prompt.

## Использование в качестве диалоговой системы
Создайте и настройте новый голосовой ассистент:
## Using as Voice Assistant
Create and configure Voice Assistant:

<img src="https://raw.githubusercontent.com/gritaro/gigachain/main/static/voice-assistant.jpeg" alt="Voice Assistant">
Loading

0 comments on commit 6653779

Please sign in to comment.