Почему чат-бот вообще не учитывает «системное сообщение»?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему чат-бот вообще не учитывает «системное сообщение»?

Сообщение Anonymous »

Я пытаюсь применить чат-бота с помощью службы Azure OpenAI со своими собственными данными. Я хочу дать ему конкретные инструкции по персонализации. Поскольку он использует ChatGPT, я могу общаться с ним практически на любом языке. Поэтому я поручил ему отвечать на запросы пользователей на том языке, на котором они были заданы. Кроме того, я дал ему имя. Однако на первый вопрос он всегда отвечает на английском (на последующие вопросы он в основном меняется), а когда я спрашиваю его имя, он говорит, что его нет. Это говорит о том, что мое «системное сообщение» вообще не рассматривается. Буду благодарен за любую помощь.

import os
import openai
import dotenv
import re

dotenv.load_dotenv()

endpoint = os.environ.get("AZURE_OAI_ENDPOINT")
api_key = os.environ.get("AZURE_OAI_KEY")
deployment = os.environ.get("AZURE_OAI_DEPLOYMENT")

client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-02-01",
)

# Initial system message
system_message = {
"role": "system",
"content": "Sei un assistente virtuale chiamato Jonathan. Rispondi sempre nella stessa lingua della domanda dell'utente.",
}

def get_response(user_query):
completion = client.chat.completions.create(
model=deployment,
temperature=0.5,
max_tokens=1000,
messages=[
system_message,
{
"role": "user",
"content": user_query,
},
],
extra_body={
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": os.environ["AZURE_SEARCH_ENDPOINT"],
"index_name": os.environ["AZURE_SEARCH_INDEX"],
"authentication": {
"type": "api_key",
"key": os.environ["AZURE_SEARCH_KEY"],
}
}
}
],
}
)

# Extract the response content
response_content = completion.choices[0].message.content

# Remove references like [doc4] using regex
cleaned_response_content = re.sub(r'\[doc\d+\]', '', response_content)

return cleaned_response_content

def main():
while True:
# Prompt the user for input
user_query = input("Per favore inserisci la tua domanda (o 'esci' per terminare): ")

if user_query.lower() in ['esci', 'exit', 'quit']:
print("Bye bye!")
break

# Get and print the response
response = get_response(user_query)
print("Response: " + "\n" + response + "\n")

if __name__ == '__main__':
main()



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

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

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

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

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

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

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