AAAAAAAKATRIIiNNNAAAA009
@AAAAAAAKATRIIiNNNAAAA009
Студентка-страдальщица

Как причесать текст в telegram боте?

Есть рабочий код, к нему претензий нет:

import telebot
import openai
import requests
import json
from openai import OpenAI

client = OpenAI(
    api_key="sk-Gl6F49cNWtLe5woCM6EcDUAsgCuwGa4о",
    base_url="https://api.proxyapi.ru/openai/v1",
)

bot = telebot.TeleBot('****************')

@bot.message_handler(commands = ['start'])
def start(message):
    bot.send_message(message.chat.id, 'Привет! Как ты себя чувствуешь? Начни со слов "Я чувствую себя" или "Я чувствую"')

@bot.message_handler(content_types = ['text'])
def otvet(message):
    response = client.chat.completions.create(
        model="gpt-4o",
        response_format={"type": "json_object"},
        messages=[
            {"role": "user", "content": "я чувствую усталось json"},
            {"role": "system", "content": "советы при усталости json"},
        ]
    )
    print(response.choices[0].message.content)
    bot.send_message(message.chat.id, f'Вот некоторые советы: {response.choices[0].message.content}')

bot.polling(none_stop = True)


Но меня не устраивает, что ответ он выводит в таком виде при всех убранных JSON:

Вот некоторые советы: 
    {
        "советы_по_борьбе_с_усталостью": [
            {
                "совет": "Отдохни",
                "описание": "Дай себе короткий перерыв, чтобы восстановить силы. Даже 5-10 минут отдыха могут помочь."
            },
            {
                "совет": "Пей воду",
                "описание": "Обезвоживание ухудшает самочувствие и уровень энергии. Убедись, что пьешь достаточно жидкости."
            },
            {
                "совет": "Двигайся",
                "описание": "Легкие физические упражнения, такие как растягивание или короткая прогулка, могут оживить и улучшить настроение."
            },
            {
                "совет": "Питайся правильно",
                "описание": "Здоровая пища и регулярные приёмы пищи помогают поддерживать уровень энергии и концентрацию."
            },
            {
                "совет": "Высыпайся",
                "описание": "Хороший ночной сон важен для восстановления сил и продуктивности на следующий день."
            },
            {
                "совет": "Ограничь кофеин",
                "описание": "Избыток кофеина может привести к падению уровня энергии и раздражительности. Постарайся не злоупотреблять кофе и другими напитками с кофеином."
            },
            {
                "совет": "Отдыхай от экрана",
                "описание": "Длительное время перед экраном может вызывать усталость глаз и мозговую усталость. Регулярные перерывы помогут."
            },
            {
                "совет": "Примени техники расслабления",
                "описание": "Практики, такие как глубокое дыхание, медитация и йога, могут помочь снизить уровень стресса и усталости."
            },
            {
                "совет": "Обратись к врачу",
                "описание": "Если усталость не проходит долгое время и слишком сильно влияет на твою жизнь, стоит проконсультироваться с врачом."
            }
        ]
    }


В качестве API использовала ProxyAPI.

Как его привести в божеский вид?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 2
HuDeez
@HuDeez
Так Вы сами запрашиваете его дать ответ в виде JSON. Зачем?
messages=[
  {"role": "user", "content": "я чувствую усталость json"},
  {"role": "system", "content": "советы при усталости json"},
]

А в целом, если Вы хотите у GPT узнать, что делать в зависимости от того, как чувствует себя пользователь, то логично было бы передавать его же сообщение, а не уже заготовленное?

messages=[
  {"role": "user", "content": str(message.text)},
  {"role": "system", "content": "советы при " + str(message.text)},
]


Безусловно, этот вариант не идеален, так как пользователь может ввести что захочет, но решение этой проблемы уже за Вами.
Ответ написан
Vindicar
@Vindicar
RTFM!
Ты уж решай - или ты хочешь структурированный ответ, например, json, или ты хочешь простой текст.
В зависимости от этого формулируй запрос и указывай тип ожидаемого ответа.
Если хочешь json - имеет смысл приложить образец jsonки, чтобы в ней были те поля, которые ты ожидаешь получить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Гринатом Москва
от 150 000 ₽
16 июн. 2024, в 10:04
3000 руб./за проект
16 июн. 2024, в 08:11
1000 руб./за проект