-
Notifications
You must be signed in to change notification settings - Fork 642
.NET: Improve fidelity of OpenAI Responses hosting #1550
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR migrates from the OpenAI SDK types to generated types for Responses, improving fidelity with streaming output. The changes restructure the responses implementation to use custom generated models instead of the OpenAI SDK types, while maintaining the same CreateResponse API functionality.
Key changes:
- Replaced OpenAI SDK types with generated types for response handling
- Implemented new converter classes for transforming between agent responses and generated models
- Restructured streaming response processing with new event generation approach
Reviewed Changes
Copilot reviewed 16 out of 614 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| ResponseConverterExtensions.cs | New converter for transforming agent responses to Response models |
| RequestConverterExtensions.cs | New converter for extracting input messages from CreateResponse |
| AfItemResourceGenerator.cs | New generator for creating item resources from streaming agent updates |
| SingletonOptionsMonitor.cs | Utility class for singleton options monitoring |
| ModelConversionExtensions.cs | Extension methods for converting between model types |
| IIdGenerator.cs | Interface and extensions for generating various types of IDs |
| DefaultIdGenerator.cs | Default implementation of ID generator with Foundry-style IDs |
| CompositeDisposable.cs | Utility class for aggregating multiple disposable objects |
| AsyncEnumerableExtensions.cs | Extension methods for async enumerable operations |
| AIAgentResponsesProcessor.cs | Refactored processor to use generated types instead of OpenAI SDK |
| AssemblyInfo.cs | Added InternalsVisibleTo for test assembly access |
| Microsoft.Agents.AI.Hosting.OpenAI.csproj | Updated package references and removed unused warnings |
| HostApplicationBuilderExtensions.cs | New extension for configuring OpenAI Responses support |
| EndpointRouteBuilderExtensions.Responses.cs | Simplified endpoint mapping with new generated types |
| Program.cs | Added OpenAI Responses configuration to sample |
| Directory.Packages.props | Added System.ClientModel package reference |
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Common/Id/DefaultIdGenerator.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Common/AsyncEnumerableExtensions.cs
Outdated
Show resolved
Hide resolved
|
Does this replace #1542 ? |
...rc/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Generated/Models/ComputerActionScreenshot.cs
Outdated
Show resolved
Hide resolved
Yes |
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Microsoft.Agents.AI.Hosting.OpenAI.csproj
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Common/AsyncEnumerableExtensions.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Common/AsyncEnumerableExtensions.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Common/Id/DefaultIdGenerator.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Common/Id/DefaultIdGenerator.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Converters/AfItemResourceGenerator.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Converters/AfItemResourceGenerator.cs
Outdated
Show resolved
Hide resolved
...Microsoft.Agents.AI.Hosting.OpenAI/ChatCompletions/Utils/ChatCompletionsOptionsExtensions.cs
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/EndpointRouteBuilderExtensions.Responses.cs
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/EndpointRouteBuilderExtensions.Responses.cs
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs
Outdated
Show resolved
Hide resolved
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/Converters/ItemContentConverter.cs
Show resolved
Hide resolved
…unResponseExtensions.cs Co-authored-by: Stephen Toub <[email protected]>
…unResponseExtensions.cs Co-authored-by: Stephen Toub <[email protected]>
* Improve conformance of OpenAI Responses API serving * Update dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs Co-authored-by: Stephen Toub <[email protected]> * Update dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/Responses/AgentRunResponseExtensions.cs Co-authored-by: Stephen Toub <[email protected]> * Sort packages * Relax adherence where acceptable * nit * PromptCacheKey is not obsolete * format --------- Co-authored-by: Stephen Toub <[email protected]>
Motivation and Context
The current Responses implementation does not match the streaming output produced by Responses.
Description
This PR migrates from the OpenAI SDK types to generated types for Responses and aligns output with the expected output.
The Responses HTTP API surface is still not fully covered, but this PR does not change that, and we can address it in a subsequent PR. Currently, only the CreateResponse API is supported.
Contribution Checklist