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.

Как его привести в божеский вид?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 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ки, чтобы в ней были те поля, которые ты ожидаешь получить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 17:47
7000 руб./за проект
21 нояб. 2024, в 17:30
1500 руб./за проект
21 нояб. 2024, в 17:22
7000 руб./за проект