Запрос на завершение чата OpenAI для определения намерений пользователя на основе истории чатаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запрос на завершение чата OpenAI для определения намерений пользователя на основе истории чата

Сообщение Anonymous »

Я работаю над помощником с искусственным интеллектом, который анализирует историю чата между пользователем и другим помощником и делает вывод о реальных намерениях запроса пользователя.
Я работаю в издательстве, и я создаю чат-бота, который внутри себя генерирует предложения SQL с помощью LangChain (агент SQL). Бот может получать такую ​​информацию, как цены, происхождение публикаций, киоски, идентификаторы публикаций, темы и т. д. Поскольку эти агенты не имеют состояния (так же, как завершение чата), я использую еще один слой завершения сверху, чтобы генерировать значимые запросы для бота.< /p>
Например:
Если я спрошу агента: «Какая новая публикация о «фиторастении» от редакции А-47854», он получит:

Код: Выделить всё

Response:

A new study on fossils and phytoplankton
ISBN: 1237854-HNU
Country: France
Edition: On Hold
House: Journal World Inc.

Phyplankton in Stale Water
ISBN: HBXX78-HNU
Country: Germany
Edition: Published
House: Environmental Herald
Но если я задам дополнительный вопрос: «Какие еще публикации у вас есть из второго дома?» агент не сможет ответить правильно, потому что это без памяти.
Я пытаюсь создать слой поверх него, который будет перезаписывать и предоставлять контекст запроса, чтобы моя модель могла давать более точный ответ.
Желаемое изменение запроса:

Код: Выделить всё

For example, for the follow-up question:
"What other publications do you have from the second house?"
The expected reformulation would be:
"What other publications aside from 'Phyplankton in Stale Water' (ISBN HBXX78-HNU) does the house 'Environmental Herald' have?"
Почему?
Потому что «Экологический вестник» — второй дом, упомянутый в истории чата, и эта контекстная информация имеет решающее значение.
Аналогично, если пользователь говорит что-то вроде «Спасибо» или «Вот и все, бот», запросы такого типа не следует переписывать.
Если запрос не связан с предыдущим диалогом, его следует вернуть как есть. Например: «Расскажите мне о последних публикациях по биомеханике из Лондона».
Я испробовал множество подсказок и подходов для достижения такого поведения, но ничего не помогало.
Моя подсказка:

Код: Выделить всё

*SYSTEM = """
Below is a history of the conversation so far, and a new question asked by the user that needs to be answered by searching in a knowledge base.
When related to the query, make use of the keywords 'Editorial' and 'House', and include the ISBN code when the question needs rewriting.
Your job is to generate queries, never to answer them.

Follow these steps and rules:

Rules:
1. If the user is greeting you, congratulating you, or saying goodbye, pass that text as it is. For example, "Thank you, bot":
Your final output must be: "Thank you, bot."

2. Analyze the chat history and determine if the current user query is related to the previous conversation. If so, provide the relevant context, data, keywords, and codes to pass it to the SQL agent.

Example:

User: "What's the latest titles in the catalog?"
Assistant: "1. Biomechanics for College Students 2. Statistics Beyond Inference 3. Movie Nights as a Way to Therapy"
User: "Give more info on the second one."

The proper output to generate would be:
"More information on 2. 'Statistics Beyond Inference'."
"""*
И мой код:

Код: Выделить всё

# System message
system_message = {
"role": "system",
"content": SYSTEM
}

user_query = "Tell me more about the second publication"

# Create the full message list: system message + chat history + current user query
messages = [system_message]  + CHAT_HISTORY + [
{
"role": "user",
"content": user_query,
}
]

contex_question = model_client.chat.completions.create(
model=deployment,
messages=messages,
temperature=0.0
)

key_question = contex_question.choices[0].message.content

print(f"Inference prompt: {messages}\n")
print(f"Generated response: {key_question}")
Когда я печатаю {messages, я вижу, что приглашение хорошо структурировано, и мой последний вопрос добавлен правильно, но ответы часто не такие, как я ожидаю.< /p>
Например, если это моя история чата:
Пользователь: «Есть ли у вас какие-либо публикации из Норвегии по биомеханике?» ?"
Ассистент: "Да, есть. 1. Показатели очков по биомеханике ISBN 4785-7854 и 2. ISBN 8575-8YUA по общим решениям для металлов и биотехнологий."
Затем я спрашиваю:
Пользователь: «Какова дата публикации первого?»
Я получаю ответ:
«Дата публикации первого издание по биомеханике в Норвегии."

Код: Выделить всё

However, the expected output I want is:
"Publication date for Glasses Metrics on Biomechanics ISBN 4785-7854."
Обратите внимание, как включен ISBN, что является желаемым поведением.
Кроме того, если я наберу что-то вроде:
Пользователь: " Спасибо, бот. Вот и все».
Я получаю такие ответы:
«Приходите в любое время». или
"Другие публикации, связанные с Норвегией и биомеханикой".

Код: Выделить всё

These responses are not expected. The model should return the exact message when it's a polite phrase like "Thank you."
Как я могу настроить код, подсказку или логику для достижения желаемого результата?

Подробнее здесь: https://stackoverflow.com/questions/790 ... at-history
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»