Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Adding responseFormat parameter in OpenAI Chat Completion Request #2329

Merged
merged 5 commits into from
Jan 3, 2025

Conversation

FarrukhMasud
Copy link
Contributor

OpenAI chat completion accepts response_format as request parameter. Setting this parameter as json_objectguarantees that response from OpenAi service will be in JSON format. It does also require that one of the prompt must also have the word JSON in it. In this PR, we are adding a new field in request, which can be json_object or text as prescribed by OpenAI. In case it is set as json_object, then we also add a system prompt instructing openAI to respond in JSON format.

Unit tests have been added to validate this functionality

What changes are proposed in this pull request?

We have added new field ChatCompletion class that takes responseFormat as parameter.

How is this patch tested?

  • I have written tests (not required for typo or doc fix) and confirmed the proposed feature/bug-fix/change works.

Does this PR change any dependencies?

  • No. You can skip this section.
  • Yes. Make sure the dependencies are resolved correctly, and list changes here.

Does this PR add a new feature? If so, have you added samples on website?

  • No. You can skip this section.
  • Yes. Make sure you have added samples following below steps.
  1. Find the corresponding markdown file for your new feature in website/docs/documentation folder.
    Make sure you choose the correct class estimators/transformers and namespace.
  2. Follow the pattern in markdown file and add another section for your new API, including pyspark, scala (and .NET potentially) samples.
  3. Make sure the DocTable points to correct API link.
  4. Navigate to website folder, and run yarn run start to make sure the website renders correctly.
  5. Don't forget to add <!--pytest-codeblocks:cont--> before each python code blocks to enable auto-tests for python samples.
  6. Make sure the WebsiteSamplesTests job pass in the pipeline.

OpenAI chat completion accepts `response_format` as request parameter. Setting this parameter as `json_object`guarantees that response from OpenAi service will be in JSON format. It does also require that one of the prompt must also have the word JSON in it. In this PR, we are adding a new field in request, which can be `json_object` or `text` as prescribed by OpenAI. In case it is set as `json_object`, then we also add a system prompt instructing openAI to respond in JSON format.

Unit tests have been added to validate this functionality
@FarrukhMasud
Copy link
Contributor Author

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@codecov-commenter
Copy link

codecov-commenter commented Jan 2, 2025

Codecov Report

Attention: Patch coverage is 90.56604% with 5 lines in your changes missing coverage. Please review.

Project coverage is 84.54%. Comparing base (17e06b2) to head (22b0a6c).

Files with missing lines Patch % Lines
...zure/synapse/ml/services/openai/OpenAIPrompt.scala 82.35% 3 Missing ⚠️
...apse/ml/services/openai/OpenAIChatCompletion.scala 94.28% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2329      +/-   ##
==========================================
+ Coverage   84.48%   84.54%   +0.06%     
==========================================
  Files         328      328              
  Lines       16799    16844      +45     
  Branches     1498     1512      +14     
==========================================
+ Hits        14192    14241      +49     
+ Misses       2607     2603       -4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@FarrukhMasud
Copy link
Contributor Author

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@FarrukhMasud
Copy link
Contributor Author

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@FarrukhMasud
Copy link
Contributor Author

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@FarrukhMasud
Copy link
Contributor Author

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mhamilton723 mhamilton723 merged commit 3ec2ccd into microsoft:master Jan 3, 2025
67 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants