Commit Graph
51 Commits
Author SHA1 Message Date
d964b05ae7 Add an AgentRunResponse ctor accepting a ChatResponse (#204)
* Add an AgentRunResponse ctor accepting a ChatResponse

* Update dotnet/src/Microsoft.Extensions.AI.Agents.Abstractions/AgentRunResponseUpdate.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-21 14:49:47 +00:00
westeyandGitHub a8fadbc49c Add a minimum console demo app (#198)
* Add a minimum console demo app

* Remove hardcoded values from sample.

* Make console project .net 9.0 only.

* Move minimum console demo to demo folder.

* Fix framework issue with demo project.

* Undo unintended commit.

* Address PR comments

* Fix build issue.

* Address PR Comments

* Rename Agent to AIAgent in new console app.
2025-07-21 09:49:47 +00:00
Stephen ToubandGitHub 6c12b2c0f8 Round 3 of cleanup (#186)
- Enable warnings as errors
- Make the remaining src projects NativeAOT compatible
- Use Throw helpers
2025-07-20 23:07:50 -04:00
westeyandGitHub fc999e2be8 Rename Agent to AIAgent and instroduce DisplayName (#201) 2025-07-18 15:43:38 +00:00
6e57489a44 .Net: Add OpenTelemetry Support and Samples (#182)
* Adding sample and implementation similar to MEAI approach

* Add Telemetry UnitTests

* Fix Async suffix

* Add ADR with the proposal

* Address merge changes

* Fixing const visibility + coverage

* Increase test coverage, add metrics collection code paths

* Fix warnings

* WIp

* Convention adeherence

* Add gen-ai.system logic + UT

* Add convetion reference

* Address PR comments

* Addressing PR comments, Agent name optional

* Remove constant

* Update dotnet/src/Microsoft.Extensions.AI.Agents/ChatCompletion/ChatClientAgent.cs

Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>

* GetLoggingName

---------

Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
2025-07-16 17:00:24 +00:00
westeyandGitHub dd32a6d399 Add extension methods to get an AF agent from a Foundry Client (#191)
* Add helpers to go from foundry client to agent more easily.

* Fix xml docs.
2025-07-16 14:45:31 +00:00
westeyandGitHub 95a3264c8b Add ChatClientAgent constructor overload (#188)
* Add ChatClientAgent constructor overload

* Add unit tests for new constructor

* Up code coverage with extra tests

* Address PR comments.

* Address PR comment

* Add additional test to increase code coverage.
2025-07-16 13:36:17 +00:00
ChrisandGitHub e6d611abe4 Display thread type name in error message (#192) 2025-07-15 21:11:31 +00:00
Dmytro StrukandGitHub fa96f74ee9 Removed Persistent SDK IChatClient implementation (#190) 2025-07-15 17:37:42 +00:00
Stephen ToubandGitHub 59bf7343af Update {Azure.AI.}OpenAI package versions (#187) 2025-07-14 18:04:52 -04:00
westeyandGitHub 55045b5c1e Basic agent invocation sample (#175)
* Basic agent invocation sample

* Simplify sample further.

* Add additional comment.

* Address code review comments.

* Suppress CA2000 and remove using from most basic sample, since the IChatClient instances involved do not do any disposal.
2025-07-14 15:15:46 +00:00
Stephen ToubandGitHub 80c1e2ee0a Allow InProcessRuntime subscriptions to be processed concurrently (#179)
* Allow InProcessRuntime subscriptions to be processed concurrently

* Fix tests
2025-07-11 21:50:51 -04:00
18299bc701 Fix handoff function names (#178)
* Fix handoff function names

Handoffs are including the agent name in the function name. But the agent name can include characters that are invalid for a function name, which results in errors. Replace them.

* Update dotnet/src/Microsoft.Agents.Orchestration/Handoff/HandoffActor.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-11 21:35:10 -04:00
Stephen ToubandGitHub 456e7d1b65 Round 2 of cleanup for agent runtime and orchestrations (#164)
- Moved InProcessRuntime type into abstractions package and deleted InProcess package.
- Moved several members of IAgentRuntime to be extension methods instead, e.g. multiple GetActorAsync overloads.
- Added synchronous RegisterMessageHandler overloads and used them to avoid unnecessary async usage at call sites.
- Removed unnecessary surface area from InProcessRuntime, e.g. StopAsync, RunUntilIdleAsync, etc.
- Fixed spin loop in InProcessRuntime that would consume an entire core for the duration of the orchestration's operation.
- Removed a bunch of allocation from InProcessRuntime.
- Made a runtime optional for orchestrations, defaulting to using a temporary InProcessRuntime if none is provided.
- Removed custom delegate types from orchestrations.
- Consolidated namespaces.
- Used records to simplify message classes.
- Tweaked naming on AgentActor to make purpose of protected methods more clear.
- Removed invocation in AgentActor.InvokeAsync of empty update / isFinal parameter.
- Changed OrchestrationHandoffs to avoid needing to pass in agents duplicatively.
- Made various extension methods, such as those on OrchestrationHandoffsExtensions, into instance methods.
2025-07-11 11:12:18 -04:00
eca0eb9cd0 .Net: Introduce Dependency Injection Samples (#165)
* DI WIP

* Update dependency injection examples and Agent Creation update

* Rollback override for GettingStarted as Azure.AI.OpenAI package currentl does not support OpenAI 2.2.0 GA version

* Dropping ct

* Update dotnet/samples/GettingStarted/AgentSample.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-11 13:27:07 +00:00
715769e649 Run Response ADR & Updates (#104)
* Add ADR for different run response options

* Add another option to the list.

* Update agno non-streaming with further clarification

* Add another option

* Adding optional includeUpdates option

* Adding Pros/Cons for each option

* Make pros/cons a list

* Add some thoughts on structured outputs and custom AIContent types

* Update design doc to clarify primary and secondary better and split out custom response types with it's own options

* Add structured outputs competitive comparison and suggestion

* Address PR comments.

* Remove AgentRunFinishReason until we can find a good use case for it.

* Add finish reason to list of excluded properties.

* Add custom agent run response types.
Usage to follow.

* Update Agent run response types

* Add additional code coverage

* Remove onIntermediateMessage since it is unecessary with the new response approach.

* Add AgentId to response.

* Rename ParseAsStructuredOutput to Deserialize

* Update decision doc.

* Fix formatting.

* Update CopilotStudio to return new response types

* Address PR comment

Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>

---------

Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
2025-07-11 11:39:18 +00:00
westeyandGitHub 33d09d263b Set CopilotStudio integration tests to manual run only. (#166) 2025-07-11 10:58:37 +00:00
westeyandGitHub b708e2507d Add PoC CopilotStudio agent (#84)
* Add project and skeleton files.

* Add CopilotStudioAgent implementation

* Add CopilotStudio integration tests

* Fix typos and PR feedback.

* Fix .net framework build errors.

* Address PR comments

* Remove temp test.

* Add rawresponse for streaming updates and more comments.

* Add TODO to review streaming updates

* Address PR comments and fix some issues with streaming messages.

* Map additional properties to agent reponses

* Update CopilotStudio integration tests to match new approach.

* Update copilot studio namespaces/project names to match new naming

* Add todo's for AIContent types.

* Remove files from PR.

* Fix up sln file.

* Update .gitignore.

* Remove duplicate package version items.
2025-07-11 09:20:40 +00:00
fef4fd2c18 .Net: Update Code Interpreter Sample as a Step. (#148)
* Updating code interpreter samples

* Small adjustments to ensure it works as expected

* Update dotnet/samples/GettingStarted/Steps/Step03_ChatClientAgent_UsingCodeInterpreterTools.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address xmldoc

* Addressing PR coment, external implementaions + ChatClients update, removing RawRepresentationFactory requirement

* Address warnings

* Update Fix warnings

* Proposed changes for the OpenAIAssistantChatClient

* Address PR comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
2025-07-10 15:26:41 +00:00
Stephen ToubandGitHub 01fd74a80c Update some dependency version (#162) 2025-07-10 14:22:17 +00:00
westeyandGitHub bc6573f475 Remove instructions from base agent type, and ensure description is only required where necessary. (#154)
* Remove instructions from base agent type, and ensure description is only required where necessary.

* Fix code issue.

* Remove unused import.

* Remove typo

* Make the description parameter optional

* Also use name for handoffs if no description is provided.
2025-07-10 13:06:45 +00:00
Stephen ToubandGitHub fbf1f10a8a First round of cleanup of runtime abstractions (#156) 2025-07-10 07:57:51 -04:00
Stephen ToubandGitHub 4a0f8dcbe0 Port Agent Runtime abstractions / inprocess runtime (#149) 2025-07-09 09:08:45 -04:00
7c8ec5ec19 .NET Port Agent Orchestration (#107)
* Checkpoint

* Checkpoint

* Namespaces

* Namespace

* Cleanup

* Namespace order

* Fix sync

* Formatting

* Formatting

* Namespace

* Namespace order

* Code convention

* Naming

* Naming

* Text handling

* Text handling

* Namespace

* Namespace order

* Namespace ordering

* Test

* ValueTask

* net472

* Test fix

* Fix namespace (net472)

* Namespace

* Fix conditional namespace

* Fix type expression

* Compatibility and cleanup

* Sample compatibility

* Sample compat

* Test compat

* modifier order

* Simply http-stub

* Formating fix for unit-test

* Fix test

* Real fix

* Test clean-up

* Update dotnet/src/Microsoft.Agents.Orchestration/Handoff/HandoffOrchestration.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix build errors after merging

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
2025-07-08 13:04:34 -04:00
Roger BarretoandGitHub d6c829cddf Fix warnings (#133) 2025-07-07 15:12:02 +00:00
Dmytro StrukandGitHub fbb0fdfe0d .Net: Code interpreter tool abstraction and implementation examples (#110)
* Added code interpreter abstraction updates for OpenAI Assistants

* Updated Persistent Agents implementation based on latest changes in SDK

* Added code interpreter abstraction updates for Azure AI Persistent Agents

* Small note for OpenAI responses code interpreter

* Small update

* Fixes after merge

* Addressed PR feedback

* Small update

* Small fix

* Fix after merge
2025-07-01 14:59:51 +00:00
Mark WallaceandGitHub 95738b0ac2 Renaming to use Microsoft.Extensions prefix (#120)
* Rename the folders

* Rename the .csproj files

* Some build file updates

* Update namespaces

* Fix order of imports

* Fix order of imports

* Fix order of imports
2025-07-01 08:15:28 +00:00
Roger BarretoandGitHub b46ee00468 .Net: Agent Samples - Adding AzureAIAgentsPersistent to Steps (#105)
* Adding Persistent Agent to Steps

* Add comments

* Ensure changes

* Fix format

* Fix formatting

* Adding cancellation token good practice
2025-06-26 22:17:59 +00:00
Roger BarretoandGitHub 06a690685f .Net: Add Reasoning Model Integration tests (#100)
* Add reasoning integration tests

* Adding Reasoning Model config
2025-06-25 19:50:29 +00:00
Stephen ToubandGitHub e7b559fa62 Suggested tweaks to Agent (#88)
- Id should return a stable ID, not a different value per access
- The RunAsync virtuals needn't be virtuals... a derived type can/should override just the main worker abstract method
- The protected methods should do argument validation
2025-06-24 15:57:40 +00:00
westeyandGitHub 5f2af80735 Add function call integration tests (#90)
* Add function call tests

* Address PR comment
2025-06-23 09:02:17 +00:00
westeyandGitHub 578b35723a Remove AdditionalInstructions from AgentRunOptions since it is not well supported outside of ChatClientAgents (#87)
* Remove additional instructions from AgentRunOptions since it is not well supported outside of ChatClientAgents

* Fix typos and remove unused test.

* Make further namespace fixes and update AzureAIAgent with new tests.

* Expand tests to increase code coverage
2025-06-20 11:54:37 +00:00
Roger BarretoandGitHub 2cd77596c3 .Net: Add OpenAI Responses Agent Samples (#83)
* Improved Merge logic

* Add modularization for Model Samples and Azure OpenAI

* Address PR feedback

* Warning fix

* Address PR comments

* Adding OpenAI Response Samples

* Clean up

* Revert to provider specific chat options

* Fix warnings

* Revert slnx changes
2025-06-19 18:06:08 +00:00
Dmytro StrukandGitHub 47dcad6b49 .Net: Added Azure AI Persistent Agents (#81)
* Added PersistentAgentsChatClient

* Added integration tests

* Small fixes

* Added sample

* Added TODO for tools

* Small rename

* Removed user-secrets id

* Renamed project

* Fixed warning

* Fixed warning

* More fixes

* More fixes
2025-06-19 14:01:26 +00:00
westeyandGitHub d1d69af482 Add tests for ChatClientAgent with OpenAI responses (#82)
* Add tests for ChatClientAgent with OpenAI responses

* Address PR comments

* Fix typo
2025-06-19 09:12:24 +00:00
Roger BarretoandGitHub 14f3811648 .Net: Add Azure OpenAI Agent Model Samples (#80)
* Improved Merge logic

* Add modularization for Model Samples and Azure OpenAI

* Address PR feedback

* Warning fix

* Address PR comments
2025-06-18 12:00:38 +00:00
westeyandGitHub e6bfc51367 Add additional integration tests and add OpenAIAssistant integration tests project. (#79)
* Add additional integration tests and add OpenAIAssistant integration tests project.

* Address PR comments.

* Address PR comments.
2025-06-17 11:43:29 +00:00
16cbc44611 .Net: Adding ChatOptions configuration to the Agent level (#75)
* Adding ChatOptions configuration to the Agent level

* fix warnings

* Address Copilot Feedback

* Add UT for new AgentExtensions

* Add UnitTests for ChatOptions merging behavior

* Fix warning

* Address PR Feedback

* Update dotnet/src/Microsoft.Agents/ChatCompletion/ChatClientAgent.cs

Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>

---------

Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
2025-06-17 09:08:11 +00:00
westeyandGitHub 293cdb1846 Add test infrastructure for agent conformance tests (#77)
* Add test infrastructure for agent conformance tests

* Address PR comments.

* Switch TargetFrameworks to have inline condition
2025-06-16 11:32:20 +01:00
westeyandGitHub 4d3b17eb27 Add sample for OpenAIAssistant ChatClientAgent (#74)
* Add sample for OpenAIAssistant

* Fix warning

* Add tools sample and simplify running samples.

* Restructure samples to show common features separate from each type of underlying IChatClient implementation.

* Remove unecessary suppression.

* Renaming namespaces based on suggestion from PR.
2025-06-13 17:11:56 +01:00
westeyandGitHub d6dc360215 Update ChatClientAgentThread to support both in-memory and service storage. (#70)
* Update ChatClientAgentThread to support both in-memory and service storage.

* Fix typos.

* Address PR comments

* Move code to reusable sections.

* Remove DefaultThreadStorageLocation

* Change thread type naming and make it internal

* Fix bug for streaming case.

* Add additional unit tests

* Add more unit tests to verify agent's thread update behavior.
2025-06-12 13:28:08 +00:00
2c75f13337 .Net: Add ChatClientAgent Samples - OpenAI Model Client (#72)
* Add Streaming API

* Removing InstructionsRole

* Updating thread notification strategy

* Fix net472 failing

* Small fixes

* Adding Samples for OpenAI

* WIP samples

* default runsettings for unit tests

* Adding first samples with OpenAIModelChatClientAgents

* Removing OpenAI dependency on the sample utility

* Release -> Debug update for GettingStarted project

* Fix GettingStarted.csproj failing to build in Release

* Update dotnet/src/Shared/Samples/BaseSample.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address PR feedback

* Fix Step 1 samples

* Simplify code

* Address PR feedback

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-12 12:22:07 +00:00
Roger BarretoandGitHub d761c92a52 .Net ChatClientAgent Streaming API Impl. (#69)
* Add Streaming API

* Removing InstructionsRole

* Updating thread notification strategy

* Fix net472 failing

* Address typo
2025-06-12 06:18:47 +00:00
Roger BarretoandGitHub 89daf173c4 .Net: ChatClientAgent (Non-Streaming initial impl) (#65)
* Add non-streaming impl

* Add missing UT

* AgentThread UT + ensuring behavior

* Fix warnings

* Increase code coverage

* Add UT

* Updated abstractions fixes

* Adding AgentInvokingChatClient for instruction handling logic

* Moving AsAgentInvokingClient to ChatClientExtensions

* Address PR Feedback

* Address PR feedback

* Address PR feedback

* Signature updates for chat run options
2025-06-11 10:21:30 +00:00
westeyandGitHub 46a117d581 Remove create/delete from AgentThread to avoid needing a thread implementation for each service. (#64)
* Remove create/delete from thread to avoid needing a thread implementation for each service.

* Address pr feedback.
2025-06-10 14:51:37 +00:00
westeyandGitHub 6882e003f5 Add IMessagesRetrievableThread interface (#63)
* Add a MessageAgentThread and GetService for Thread

* Remove redundant check and experimental attribuet.

* Address PR comments.

* Fix file name.

* Update comments.

* Remove GetService
2025-06-09 15:21:42 +00:00
Roger BarretoandGitHub 2a1c8ea1a3 Adding nuget.config + Small Async fix (#62)
* Async fix

* Fix warnings
2025-06-09 11:33:27 +00:00
af2295f130 .Net: Added Agent abstractions from SK repository (#56)
* Fixed project build in Visual Studio

* Added Agent abstractions

* Remove features we are not porting over, addressing PR comments and making updates as per agreed design.

* Add create thread method.

* Add unit tests and update invoke response type to async

* Address PR comments and fix formatting.

* Switch to shared null checker to fix build failures.

* Add additional tests to increase code coverage

* Seal mockagent

* Fix line coverage failure

* Improve coverage check formatting

---------

Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
2025-06-09 11:35:41 +01:00
Dmytro StrukandGitHub 41facf3a2d .Net: Added shared classes (#58)
* Added Throw shared class

* Added Experimental attribute

* Added IsExternalInit

* Added TrimAttributes

* Small update

* Small update

* Suppress warning

* Added comment

* Updated LegacySupport.props

* Small updates
2025-06-04 08:44:12 +00:00
Dmytro StrukandGitHub 43316ecb50 Fixed project build in Visual Studio (#55) 2025-06-03 08:51:13 +00:00