Azure Open AI — очень разные результаты по gpt4o между API Python и JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Azure Open AI — очень разные результаты по gpt4o между API Python и Java

Сообщение Anonymous »

Я делаю один и тот же вызов Azure Open AI, используя API Java и Python, и получаю совершенно разные результаты:
  • Одно и то же системное приглашение >
  • Одинаковое приглашение пользователя
  • Одинаковые (последние) версии пакетов azureai для Java и Python
Несмотря на то, что подаются одни и те же запросы пользователя и системы, ответы очень сильно различаются: приглашение Python является «правильным» и соответствует рекомендациям, указанным в приглашении.
Я предоставление рабочего примера
Подсказка пользователю

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

The following text is a customer complaint about Cheque In. Your task is to summarise your understanding of what the customer complaint was about in a few sentences.


I received a check from NS&I for £425 and tried to upload it using the check system on my online account but your system does not accept checks from the government there, I now have to drive 16 miles pay for parking ti the nearest Big Bank bank !! All because your system does not accept government checks !!!!!

Always follow these guidelines in your response:


* Start with "I understand that…".
* DO NOT include anything beyond your summary.
* Always use active voice.
* Always address the customer directly using "you".
* Refer to the bank as "we" and refer to any human advisor or agent as a colleague.
* Be clear, polite, and use language that is easy to understand.
* NEVER include any details about internal bank processes or systems, instead say "our records".
* Only use facts from the provided context.  DO NOT make up information.
* This task is VERY sensitive; you MUST NOT make mistakes.
* DO NOT mention account markers.
* Always format monetary values as £x,xxx.xx.
* Use “day month year” format for dates e.g 22 May 2023
* Only use the last 4 digits of account numbers.
* Always use British spelling, NOT American.
Системная подсказка

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

You are a complaint handler for a customer service department at Big Bank
Код Python

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

from dotenv import load_dotenv
import os, sys
import jwt
import openai
from msal import ConfidentialClientApplication
from openai import AzureOpenAI

def get_jwt_token():
# org_constants
auth = os.getenv("MS_AUTH_URL")

# Provide Azure Client/App ID and Secret to Variables
client_secret = os.getenv("AZURE_CLIENT_SECRET")
client_id = os.getenv("AZURE_CLIENT_ID")

scope_list = [client_id + "/.default"]

# Getting JWT Token Using MSAL Methods for OpenAI Authentication
app = ConfidentialClientApplication(client_id=client_id, client_credential=client_secret, authority=auth)
result = app.acquire_token_for_client(scopes=scope_list)
return result.get("access_token")

api_base_full_chat = os.getenv("API_BASE_FULL_CHAT")
deployment_model_chat = os.getenv("DEPLOYMENT_MODEL_CHAT")
api_version_chat = os.getenv("AZURE_OPENAI_API_VERSION")

def create_chat_client():
client_chat = AzureOpenAI(
api_key=get_jwt_token(),
azure_deployment=deployment_model_chat,
azure_endpoint=api_base_full_chat,
api_version=api_version_chat,
)
return client_chat

chat = create_chat_client()

response = chat.chat.completions.create(
model=deployment_model_chat,
messages=[
{"role": "system", "content": "You are a complaint handler for a customer service department at Big Bank"},
{"role": "user", "content": user_prompt},
]
)

print(response.choices[0].message.content)
Код Java

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

        this.setEnvironmnet();
//Get JWT
String auth = String.format("%s/%s", "https://login.microsoftonline.com", System.getProperty("AZURE_TENANT_ID"));
IClientSecret mySecret  = ClientCredentialFactory.createFromSecret(System.getProperty("AZURE_CLIENT_SECRET"));
ConfidentialClientApplication app = ConfidentialClientApplication.builder(System.getProperty("AZURE_CLIENT_ID"), mySecret)
.authority(auth)
.proxy(getProxy())
.build();
Set scopes = new HashSet();
scopes.add(String.format("%s/.default", System.getProperty("AZURE_CLIENT_ID")));
ClientCredentialParameters params = ClientCredentialParameters.builder(scopes).build();
IAuthenticationResult result = app.acquireToken(params).get(5000, TimeUnit.MILLISECONDS);

//Add JWT to header - get a 401 if try to use TokenCredential!
ClientOptions options = new ClientOptions();
List headers = new ArrayList();
headers.add(new Header("Authorization", String.format("Bearer %s", result.accessToken())));
options.setHeaders(headers);

//get client
OpenAIClient client = new OpenAIClientBuilder()
.clientOptions(options)
//  .credential(this.getToken())
.endpoint(System.getProperty("AZURE_GPT4O_URL"))
.buildClient();

//Build and submit Prompt
List chatMessages = new ArrayList();
chatMessages.add(new ChatRequestSystemMessage(this.getUnderstandingSystemPrompt()));
chatMessages.add(new ChatRequestUserMessage(this.getUnderstandingUserPrompt()));
ChatCompletionsOptions chatOptions = new ChatCompletionsOptions(chatMessages);
ChatCompletions response = this.getClient().getChatCompletions("gpt4o_2024-05-13", chatOptions);
response.getChoices().forEach(message ->  {
System.out.println(message.getMessage().getContent());
});
Результаты Python
Я понимаю, что вы получили чек на сумму 425 фунтов стерлингов от NS&I и попытались загрузить его с помощью нашего проверьте систему в своем онлайн-аккаунте. Ваша жалоба заключается в том, что наша система не принимает государственные чеки, поэтому теперь вам необходимо проехать 16 миль и оплатить парковку, чтобы посетить ближайшее отделение Большого банка.
Результаты Java
Уважаемый клиент,
Спасибо, что обратились к нам. Я понимаю ваше разочарование по поводу проблемы с чековым депозитом на сумму 425 долларов США. Примите мои искренние извинения за причиненные вам неудобства.
Из вашего сообщения следует, что вы пытались загрузить чек с помощью онлайн-системы, но столкнулись с проблемой, поскольку наша система это делает. не поддерживать чеки от правительства. Теперь вы оказались в ситуации, когда вам нужно проехать 16 миль до ближайшего к нам отделения для парковки, что только усугубляет ваше разочарование.
Пожалуйста, позвольте мне систематически решать ваши проблемы:
  • Понимание проблемы:
    • Мы понимаем что вы получили чек от правительства и попытались загрузить его с помощью нашей онлайн-системы проверки.
    • В настоящее время система не принимает чеки, выданные правительством, поэтому вам приходится прибегать к посещению филиала в человек.
  • Опыт работы с клиентами:
    • Принимаем к сведению Ваши неудобства, связанные с необходимостью проехать значительное расстояние для посещения филиала. Мы сочувствуем неожиданным неприятностям, которые это причинило вам.
Двигаясь вперед, вот чем мы можем вам помочь:
  • Альтернативная подача:
    • Вы можете отправить чек в свой филиал. Если вы предпочитаете этот вариант, сообщите нам, чтобы мы могли предоставить вам необходимую информацию и обеспечить быструю обработку и ответ.
  • Отзывы для улучшения:
    • Ваш отзыв будет передан нашим ИТ-специалистам и специалистам по обслуживанию для оценки. возможность включения чеков государственного образца в онлайн-систему обработки чеков.
  • Компенсация за неудобства:
    • Мы хотели бы предложить вам небольшую компенсацию за ваши неудобства. Пожалуйста, сообщите нам свой почтовый адрес, и мы возместим вам расходы на поездку.
  • Личная помощь:
    • Если у вас есть какие-либо другие конкретные потребности или помощь, пожалуйста, не стесняйтесь сообщить нам об этом. Мы здесь, чтобы помочь вам.
Еще раз приношу извинения за неудобства. Благодарим вас за понимание и терпение, пока мы работаем над решением этой проблемы. Благодарим вас за сотрудничество с нами и надеемся на лучшее обслуживание в будущем.
С уважением,
[Ваше имя]
Отдел обслуживания клиентов

Большой банк
Как вы можете видеть, в версии Java приглашение пользователя в значительной степени игнорируется - любая помощь оценил

Подробнее здесь: https://stackoverflow.com/questions/786 ... d-java-api
Ответить

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

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

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

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

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