Каким образом можно адаптировать код для работы с моделью GigaChat?

Пожалуйста, помогите адаптировать следующий код для использования с моделью Gigachat (<a href="https://developers.sber.ru/docs/ru/gigachain/overview" rel="nofollow">https://developers.sber.ru/docs/ru/gigachain/overview</a>) вместо OpenAI: <br/><br/> ``` <br/> @dp.callback_query_handler(lambda c: c.data.startswith('rewrite_')) <br/> async def process_rewrite(callback_query: types.CallbackQuery): <br/> message_id = int(callback_query.data.split('_')[1]) <br/> <br/> if message_id in message_storage: <br/> original_message = message_storage[message_id] <br/> original_text = original_message.text if original_message.text else "" <br/> <br/> rewritten_text = await rewrite_text_with_chatgpt(original_text, openai_api_key) <br/> <br/> await client.edit_message(technical_channel_id, message_id, rewritten_text) <br/> await bot.answer_callback_query(callback_query.id, "Текст переформулирован.") <br/> <br/> proxies = { <br/> "http://": proxy_url, <br/> "https://": proxy_url <br/> } <br/> <br/> async def rewrite_text_with_chatgpt(text, openai_api_key): <br/> prompt_text = "Переформулируй этот текст: " + text <br/> json_data = { <br/> "model": "gpt-3.5-turbo", <br/> "messages": [{"role": "user", "content": prompt_text}] <br/> } <br/> headers = {"Authorization": f"Bearer {openai_api_key}"} <br/> <br/> # Установка таймаута для запроса <br/> timeout = httpx.Timeout(10.0, connect=90.0) <br/> <br/> async with httpx.AsyncClient(proxies=proxies, timeout=timeout) as client: <br/> response = await client.post( <br/> " <a href="https://api.openai.com/v1/chat/completions" rel="nofollow">https://api.openai.com/v1/chat/completions</a> ", <br/> json=json_data, <br/> headers=headers <br/> ) <br/> <br/> if response.status_code == 20
  • 10 сентября 2024 г. 13:13
Ответы на вопрос 1
Чтобы адаптировать ваш код для работы с моделью GigaChat вместо OpenAI, вам нужно выполнить несколько изменений, включая настройку URL API, заголовков и структуры данных, если это необходимо. Вот пример того, как можно адаптировать ваш код:

```python
@dp.callback_query_handler(lambda c: c.data.startswith('rewrite_'))
async def process_rewrite(callback_query: types.CallbackQuery):
    message_id = int(callback_query.data.split('_')[1])

    if message_id in message_storage:
        original_message = message_storage[message_id]
        original_text = original_message.text if original_message.text else ""

        rewritten_text = await rewrite_text_with_gigachat(original_text)

        await client.edit_message(technical_channel_id, message_id, rewritten_text)
        await bot.answer_callback_query(callback_query.id, "Текст переформулирован.")

proxies = {
    "http://": proxy_url,
    "https://": proxy_url
}

async def rewrite_text_with_gigachat(text):
    prompt_text = "Переформулируй этот текст: " + text
    json_data = {
        "input": prompt_text,
        "model": "giga-chat"  # название модели, используемое в GigaChat API
    }
    
    # Установка заголовков, если это необходимо
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {your_gigachat_api_key}"  # замените на ваш ключ API GigaChat
    }

    # Установка таймаута для запроса
    timeout = httpx.Timeout(10.0, connect=90.0)

    async with httpx.AsyncClient(proxies=proxies, timeout=timeout) as client:
        # Заменяем URL на точку доступа GigaChat
        response = await client.post(
            "https://api.gigachat.sber.ru/v1/rewrite",
            json=json_data,
            headers=headers
        )

        if response.status_code == 200:
            result = response.json()
            return result["rewritten_text"]  # предполагаем, что здесь возвращается переформулированный текст
        else:
            # Обработайте ошибку
            return f"Ошибка при обращении к GigaChat: {response.status_code} {response.text}"
```

### Что изменилось:
1. **Заголовки и ключи API:** Замените `openai_api_key` на ваш `your_gigachat_api_key`.
2. **Структура запроса:** Измените тело запроса для соответствия с тем, что требуется в GigaChat (например, `"input"` вместо `"messages"`).
3. **URL API:** Обновите URL для запроса на тот, который используется в GigaChat.
4. **Обработка ответа:** Измените способ доступа к тексту результата в зависимости от структуры ответа API GigaChat.

Убедитесь, что вы проверили документацию GigaChat для точных деталей об API и необходимых параметрах.
Похожие вопросы