mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
e706f07868
* WIP * Fixed build errors (#1638) Comment and nullable type alignment * .NET: Azure.AI.Agents Package Split + Initial Extensions (#1657) * Move packages * Update nuget.config * Address Xmldoc * Remove format from branches checks * Address Xmldocs * Add more details to the implementation * Moving Agent logic to ChatClient * Adding Name and Id overrides to AzureAIAgent * Updating extensions * Add GetAiAgent extensions * Adding support for version as name can conflict 409 using the Agents API with same name * Addressing more updates to the extensions * More improvements * Remove debugging code from sample * Address copilot feedback * Apply suggestions from co-pilot code review * Update Directory.Packages.props Fix package version rollback: Azure.AI.Agents.Persistent (beta-6 => beta-7) * .NET: Add comprehensive unit tests for Microsoft.Agents.AI.AzureAIAgents extension methods (#1786) * Initial plan * Add comprehensive unit test project for Microsoft.Agents.AI.AzureAIAgents Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> * Add README documenting test project and package dependency requirements Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> * Fix documentation URL to use learn.microsoft.com Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> * Bump back AAAP 1.2.0-beta.7 * Address AI generated UT's * Remove UT Readme * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * .NET: Change model to be required just for prompt agent definition specific extensions (#1812) * Remove unneeded model from extensions * Add noop justification * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI (#1829) * .NET: Update Extensions for Strict Agent Definitions + Improvements (#1892) * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI * Update agents and extensions to comply with strict agent definitions * More static updates * Address UT, and ResponseTool support * Improving reusability extensions * Addressing ResponseTools Unit Tests and extension setup * Adapted workaround on breaking AAA with OpenAI 2.6.0 * Small updates * Remove strictness when retrieving agents, improved XmlDocs * Improve sample comments * Update dotnet/tests/Microsoft.Agents.AI.AzureAI.UnitTests/AgentsClientExtensionsTests.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Address PR comments * Address UT failing * Address Copilot feedback * Address Copilot feedback * Address comment typo * Address PR feedback * Address typo * Add missing Extensions with ChatClientAgentOptions * Address comments --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Version update (#1901) * Updated package version (#1906) * .NET: Allow Declarative AIAgents Extensions (#1931) * Improve reusability of extension code and additional option to losen the strictiness of in-proc tools * Add missing UT scenarios * Add missing UT test scenarios * Normalize changes * Updated (#1948) * .NET: AgentDefinition extensions method simplification (#1967) * Update extensions methods that accepts AgentDefinition type to not be restrictive * Update Unit Tests * Revert yarn/package-lock * Revert yarn/package-lock * Address copilot feedback * Fix bad merge * .NET Workflows - WIP Declarative action update (#1761) * WIP * Fixed build errors (#1638) Comment and nullable type alignment * Sync to SDK update * Checkpoint * Checkpoint: Tests passing * Checkpoint: EndWorkflow * Add trace * .NET: Azure.AI.Agents Package Split + Initial Extensions (#1657) * Move packages * Update nuget.config * Address Xmldoc * Remove format from branches checks * Address Xmldocs * Add more details to the implementation * Moving Agent logic to ChatClient * Adding Name and Id overrides to AzureAIAgent * Updating extensions * Add GetAiAgent extensions * Adding support for version as name can conflict 409 using the Agents API with same name * Addressing more updates to the extensions * More improvements * Remove debugging code from sample * Address copilot feedback * Apply suggestions from co-pilot code review * Checkpoint * Update Directory.Packages.props Fix package version rollback: Azure.AI.Agents.Persistent (beta-6 => beta-7) * Add project reference * .NET: Add comprehensive unit tests for Microsoft.Agents.AI.AzureAIAgents extension methods (#1786) * Initial plan * Add comprehensive unit test project for Microsoft.Agents.AI.AzureAIAgents Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> * Add README documenting test project and package dependency requirements Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> * Fix documentation URL to use learn.microsoft.com Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> * Bump back AAAP 1.2.0-beta.7 * Address AI generated UT's * Remove UT Readme * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * .NET: Change model to be required just for prompt agent definition specific extensions (#1812) * Remove unneeded model from extensions * Add noop justification * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI (#1829) * Checkpoint for merge * No build errors * .NET: Update Extensions for Strict Agent Definitions + Improvements (#1892) * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI * Update agents and extensions to comply with strict agent definitions * More static updates * Address UT, and ResponseTool support * Improving reusability extensions * Addressing ResponseTools Unit Tests and extension setup * Adapted workaround on breaking AAA with OpenAI 2.6.0 * Small updates * Remove strictness when retrieving agents, improved XmlDocs * Improve sample comments * Update dotnet/tests/Microsoft.Agents.AI.AzureAI.UnitTests/AgentsClientExtensionsTests.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Address PR comments * Address UT failing * Address Copilot feedback * Address Copilot feedback * Address comment typo * Address PR feedback * Address typo * Add missing Extensions with ChatClientAgentOptions * Address comments --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Updated package version (#1897) * Version update (#1901) * Checkpoint * Updated package version (#1906) * Checkpoint * Checkpoint * Checkpoint * Align with azure ai agent * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/MCPToolApproval/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/DeepResearch/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Refactored external input * Update dotnet/samples/GettingStarted/Workflows/Declarative/MCPToolApproval/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Agent tools patch * Demos validated * Checkpoint * Hygiene * Checkpoint - Samples * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Checkpoint * Checkpoint - Deep Research * Update baseline * Update * Typo * Checkpoint * Typos * Sample cleanup * Update dotnet/src/Microsoft.Agents.AI.Workflows.Declarative/AzureAgentProvider.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/src/Microsoft.Agents.AI.AzureAI/AgentsClientExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/FunctionTools/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/ToolApproval/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update dotnet/samples/GettingStarted/Workflows/Declarative/DeepResearch/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Typo * Typo * Fix input loop * Sample - Function Calling / External Input * Typo * Finessed * Checkpoint * Fix feed * Checkpoint - so close * Ding dong! * "there" *** * Fixup comments * Fix sample * Code analysis * Header * Typo (variableName) * Remove dead code * Skip test (agent api ratchet) * Comment * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Typo --------- Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com> * .NET: Latest updates Pre/Post V2 Bugbash Findings (#2040) * Improve V2 logic before/after bugbash prep * Apply suggestions from code review Co-authored-by: Stephen Toub <stoub@microsoft.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Stephen Toub <stoub@microsoft.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * .NET: Update Foundry Agents to latest 2.0.0 alpha.20251107.3 (#2050) * Update extensions for new CreateVersionOptions structure * Update unit tests * Addresss capitalized * Update AgentsClientExtensionsTests.cs Fix invalid cast format failure * .NET: Feature foundry agent + user agent (#2058) * Update unit tests * Add user-agent protocol calls * Update unit tests * Update unit tests with http handler confirmation * UT fix * Fix xmldoc * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Address copilot feedback --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * .NET: Update Extensions to be less restrictive for GetAIAgents (#2091) * Update behavior / restrictiveness when retrieving agents * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Address format * Address copilot feedback --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Chris <66376200+crickman@users.noreply.github.com> * .NET Workflows - Support "structured inputs" feature for declarative workflows (#2053) * Bump version for release * .NET Workflows - Separate Foundry/AzureAI Provider into its own package (#2078) * Remove unused using directive in AzureAgentProvider Removed unused using directive for Extensions. * .NET: Updates to Foundry Agents Package (#2125) * Remove the conversation creation always * Update unit tests + address IL + refactor * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Internalize unused methods --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix declarative workflows integration testcase * .NET: Feature foundry agent/agent reference extension (Python Parity with Name + Version option) (#2147) * Add agent reference extensions * Add UT covering AgentReference and ModelId * .NET: Add GettingStarted Samples for Agents V2. (#2159) * Add gettingstarted samples for Foundry Agents * Address structured outputs * Net 10 -> Net 9 Temporary * Net 10 -> Net 9 Temporary * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Address missing docs + old * Drop var for samples * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Address copilot feedback --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * .NET: Foundry Agents V2 - Add CodeInterpreter Sample (#2180) * Adding Code Interpreter sample and AgentName naming validation * Add agent name check UT * Improve sample code * Apply suggestion * Apply suggestion * Fixed (#2190) * .NET Workflows - Add "CustomerSupport" sample (#2102) * .NET Workflows - Add sample for hosted declarative workflow (#2199) * fwiw * Less blank lines * Fixed (#2204) * Update version (#2206) * .NET: Feature foundry agent/update breaking v2.0 to v1.2 (#2212) * Migration WIP Checkpoint 1 * Build + UT + Workflow passing * Address latest commits after break * Revert rename in unrelated files * Address PR comments * Class renames * Allow dotnet-format workflow on feature branches Revert unintentional edit * .NET: Add Conformance Integration Tests for AzureAI Package (#2237) * Conformance tests added and passing * Correct namespace * Update Azure.AI.Project to latest public nuget version * .NET: Added Computer use tool sample (#2235) * Initial computer use sample implementation. * Added background thread to allow polling for long running requests. * Removed unrequired try-catch block and added missing thread for agent call. * Removed irrelevant chatOptions and updated code based on feedback. * Updated image assets and fixed response issue. * Updated based on PR comments. * Update to Azure.AI.Project --------- Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com> * Package descriptions --------- Co-authored-by: Chris <66376200+crickman@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com> Co-authored-by: Chris Rickman <crickman@microsoft.com> Co-authored-by: Stephen Toub <stoub@microsoft.com> Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com> Co-authored-by: Peter Ibekwe <109177538+peibekwe@users.noreply.github.com>
282 lines
14 KiB
C#
282 lines
14 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using Azure.AI.Projects;
|
|
using Azure.AI.Projects.OpenAI;
|
|
using Azure.Identity;
|
|
using Microsoft.Extensions.Configuration;
|
|
using OpenAI.Responses;
|
|
using Shared.Foundry;
|
|
using Shared.Workflows;
|
|
|
|
namespace Demo.Workflows.Declarative.DeepResearch;
|
|
|
|
/// <summary>
|
|
/// Demonstrate a declarative workflow that accomplishes a task
|
|
/// using the Magentic orchestration pattern developed by AutoGen.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// See the README.md file in the parent folder (../README.md) for detailed
|
|
/// information about the configuration required to run this sample.
|
|
/// </remarks>
|
|
internal sealed class Program
|
|
{
|
|
public static async Task Main(string[] args)
|
|
{
|
|
// Initialize configuration
|
|
IConfiguration configuration = Application.InitializeConfig();
|
|
Uri foundryEndpoint = new(configuration.GetValue(Application.Settings.FoundryEndpoint));
|
|
|
|
// Ensure sample agents exist in Foundry.
|
|
await CreateAgentsAsync(foundryEndpoint, configuration);
|
|
|
|
// Get input from command line or console
|
|
string workflowInput = Application.GetInput(args);
|
|
|
|
// Create the workflow factory. This class demonstrates how to initialize a
|
|
// declarative workflow from a YAML file. Once the workflow is created, it
|
|
// can be executed just like any regular workflow.
|
|
WorkflowFactory workflowFactory = new("DeepResearch.yaml", foundryEndpoint);
|
|
|
|
// Execute the workflow: The WorkflowRunner demonstrates how to execute
|
|
// a workflow, handle the workflow events, and providing external input.
|
|
// This also includes the ability to checkpoint workflow state and how to
|
|
// resume execution.
|
|
WorkflowRunner runner = new();
|
|
await runner.ExecuteAsync(workflowFactory.CreateWorkflow, workflowInput);
|
|
}
|
|
|
|
private static async Task CreateAgentsAsync(Uri foundryEndpoint, IConfiguration configuration)
|
|
{
|
|
AIProjectClient aiProjectClient = new(foundryEndpoint, new AzureCliCredential());
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "ResearchAgent",
|
|
agentDefinition: DefineResearchAgent(configuration),
|
|
agentDescription: "Planner agent for DeepResearch workflow");
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "PlannerAgent",
|
|
agentDefinition: DefinePlannerAgent(configuration),
|
|
agentDescription: "Planner agent for DeepResearch workflow");
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "ManagerAgent",
|
|
agentDefinition: DefineManagerAgent(configuration),
|
|
agentDescription: "Manager agent for DeepResearch workflow");
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "SummaryAgent",
|
|
agentDefinition: DefineSummaryAgent(configuration),
|
|
agentDescription: "Summary agent for DeepResearch workflow");
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "KnowledgeAgent",
|
|
agentDefinition: DefineKnowledgeAgent(configuration),
|
|
agentDescription: "Research agent for DeepResearch workflow");
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "CoderAgent",
|
|
agentDefinition: DefineCoderAgent(configuration),
|
|
agentDescription: "Coder agent for DeepResearch workflow");
|
|
|
|
await aiProjectClient.CreateAgentAsync(
|
|
agentName: "WeatherAgent",
|
|
agentDefinition: DefineWeatherAgent(configuration),
|
|
agentDescription: "Weather agent for DeepResearch workflow");
|
|
}
|
|
|
|
private static PromptAgentDefinition DefineResearchAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelFull))
|
|
{
|
|
Instructions =
|
|
"""
|
|
In order to help begin addressing the user request, please answer the following pre-survey to the best of your ability.
|
|
Keep in mind that you are Ken Jennings-level with trivia, and Mensa-level with puzzles, so there should be a deep well to draw from.
|
|
|
|
Here is the pre-survey:
|
|
|
|
1. Please list any specific facts or figures that are GIVEN in the request itself. It is possible that there are none.
|
|
2. Please list any facts that may need to be looked up, and WHERE SPECIFICALLY they might be found. In some cases, authoritative sources are mentioned in the request itself.
|
|
3. Please list any facts that may need to be derived (e.g., via logical deduction, simulation, or computation)
|
|
4. Please list any facts that are recalled from memory, hunches, well-reasoned guesses, etc.
|
|
|
|
When answering this survey, keep in mind that 'facts' will typically be specific names, dates, statistics, etc. Your answer must only use the headings:
|
|
|
|
1. GIVEN OR VERIFIED FACTS
|
|
2. FACTS TO LOOK UP
|
|
3. FACTS TO DERIVE
|
|
4. EDUCATED GUESSES
|
|
|
|
DO NOT include any other headings or sections in your response. DO NOT list next steps or plans until asked to do so.
|
|
""",
|
|
Tools =
|
|
{
|
|
//AgentTool.CreateBingGroundingTool( // TODO: Use Bing Grounding when available
|
|
// new BingGroundingSearchToolParameters(
|
|
// [new BingGroundingSearchConfiguration(this.GetSetting(Settings.FoundryGroundingTool))]))
|
|
}
|
|
};
|
|
|
|
private static PromptAgentDefinition DefinePlannerAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelMini))
|
|
{
|
|
Instructions = // TODO: Use Structured Inputs / Prompt Template
|
|
"""
|
|
Your only job is to devise an efficient plan that identifies (by name) how a team member may contribute to addressing the user request.
|
|
|
|
Only select the following team which is listed as "- [Name]: [Description]"
|
|
|
|
- WeatherAgent: Able to retrieve weather information
|
|
- CoderAgent: Able to write and execute Python code
|
|
- KnowledgeAgent: Able to perform generic websearches
|
|
|
|
The plan must be a bullet point list must be in the form "- [AgentName]: [Specific action or task for that agent to perform]"
|
|
|
|
Remember, there is no requirement to involve the entire team -- only select team member's whose particular expertise is required for this task.
|
|
"""
|
|
};
|
|
|
|
private static PromptAgentDefinition DefineManagerAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelMini))
|
|
{
|
|
Instructions = // TODO: Use Structured Inputs / Prompt Template
|
|
"""
|
|
Recall we have assembled the following team:
|
|
|
|
- KnowledgeAgent: Able to perform generic websearches
|
|
- CoderAgent: Able to write and execute Python code
|
|
- WeatherAgent: Able to retrieve weather information
|
|
|
|
To make progress on the request, please answer the following questions, including necessary reasoning:
|
|
- Is the request fully satisfied? (True if complete, or False if the original request has yet to be SUCCESSFULLY and FULLY addressed)
|
|
- Are we in a loop where we are repeating the same requests and / or getting the same responses from an agent multiple times? Loops can span multiple turns, and can include repeated actions like scrolling up or down more than a handful of times.
|
|
- Are we making forward progress? (True if just starting, or recent messages are adding value. False if recent messages show evidence of being stuck in a loop or if there is evidence of significant barriers to success such as the inability to read from a required file)
|
|
- Who should speak next? (select from: KnowledgeAgent, CoderAgent, WeatherAgent)
|
|
- What instruction or question would you give this team member? (Phrase as if speaking directly to them, and include any specific information they may need)
|
|
""",
|
|
TextOptions =
|
|
new ResponseTextOptions
|
|
{
|
|
TextFormat =
|
|
ResponseTextFormat.CreateJsonSchemaFormat(
|
|
"TaskEvaluation",
|
|
BinaryData.FromString(
|
|
"""
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"is_request_satisfied": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": { "type": "string" },
|
|
"answer": { "type": "boolean" }
|
|
},
|
|
"required": ["reason", "answer"],
|
|
"additionalProperties": false
|
|
},
|
|
"is_in_loop": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": { "type": "string" },
|
|
"answer": { "type": "boolean" }
|
|
},
|
|
"required": ["reason", "answer"],
|
|
"additionalProperties": false
|
|
},
|
|
"is_progress_being_made": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": { "type": "string" },
|
|
"answer": { "type": "boolean" }
|
|
},
|
|
"required": ["reason", "answer"],
|
|
"additionalProperties": false
|
|
},
|
|
"next_speaker": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": { "type": "string" },
|
|
"answer": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["reason", "answer"],
|
|
"additionalProperties": false
|
|
},
|
|
"instruction_or_question": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": { "type": "string" },
|
|
"answer": { "type": "string" }
|
|
},
|
|
"required": ["reason", "answer"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["is_request_satisfied", "is_in_loop", "is_progress_being_made", "next_speaker", "instruction_or_question"],
|
|
"additionalProperties": false
|
|
}
|
|
"""),
|
|
jsonSchemaFormatDescription: null,
|
|
jsonSchemaIsStrict: true),
|
|
}
|
|
};
|
|
|
|
private static PromptAgentDefinition DefineSummaryAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelMini))
|
|
{
|
|
Instructions =
|
|
"""
|
|
We have completed the task.
|
|
|
|
Based only on the conversation and without adding any new information,
|
|
synthesize the result of the conversation as a complete response to the user task.
|
|
|
|
The user will only ever see this last response and not the entire conversation,
|
|
so please ensure it is complete and self-contained.
|
|
"""
|
|
};
|
|
|
|
private static PromptAgentDefinition DefineKnowledgeAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelMini))
|
|
{
|
|
Tools =
|
|
{
|
|
//AgentTool.CreateBingGroundingTool( // TODO: Use Bing Grounding when available
|
|
// new BingGroundingSearchToolParameters(
|
|
// [new BingGroundingSearchConfiguration(this.GetSetting(Settings.FoundryGroundingTool))]))
|
|
}
|
|
};
|
|
|
|
private static PromptAgentDefinition DefineCoderAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelMini))
|
|
{
|
|
Instructions =
|
|
"""
|
|
You solve problem by writing and executing code.
|
|
""",
|
|
Tools =
|
|
{
|
|
ResponseTool.CreateCodeInterpreterTool(
|
|
new(CodeInterpreterToolContainerConfiguration.CreateAutomaticContainerConfiguration()))
|
|
}
|
|
};
|
|
|
|
private static PromptAgentDefinition DefineWeatherAgent(IConfiguration configuration) =>
|
|
new(configuration.GetValue(Application.Settings.FoundryModelMini))
|
|
{
|
|
Instructions =
|
|
"""
|
|
You are a weather expert.
|
|
""",
|
|
Tools =
|
|
{
|
|
AgentTool.CreateOpenApiTool(
|
|
new OpenAPIFunctionDefinition(
|
|
"weather-forecast",
|
|
BinaryData.FromString(File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "wttr.json"))),
|
|
new OpenAPIAnonymousAuthenticationDetails()))
|
|
}
|
|
};
|
|
}
|