From 364188c44f2329238dc9ceb24cb3b2fbd473c06d Mon Sep 17 00:00:00 2001 From: westey <164392973+westey-m@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:43:17 +0100 Subject: [PATCH] .NET: Add link inspector (#1062) * Add link inspector * Comment out excludedirs while it's empty * Fix broken links * More links fixes * Push further fixes * Fix more links --- .github/.linkspector.yml | 27 +++++++ .github/workflows/markdown-link-check.yml | 27 +++++++ docs/CONTRIBUTING_TO_DOCS.md | 30 ------- .../0007-agent-filtering-middleware.md | 6 +- dotnet/README.md | 79 +++++++------------ .../GettingStarted/AgentProviders/README.md | 2 +- .../samples/GettingStarted/Agents/README.md | 2 +- dotnet/samples/GettingStarted/README.md | 2 +- .../Workflows/Declarative/README.md | 2 +- .../GettingStarted/Workflows/README.md | 6 +- .../Workflows/Visualization/README.md | 4 - python/DEV_SETUP.md | 2 - python/README.md | 2 +- python/packages/core/README.md | 2 +- python/samples/SAMPLE_GUIDELINES.md | 8 -- .../getting_started/observability/README.md | 4 +- .../getting_started/workflows/README.md | 3 +- workflow-samples/README.md | 2 +- workflow-samples/setup/README.md | 2 +- 19 files changed, 100 insertions(+), 112 deletions(-) create mode 100644 .github/.linkspector.yml create mode 100644 .github/workflows/markdown-link-check.yml delete mode 100644 docs/CONTRIBUTING_TO_DOCS.md diff --git a/.github/.linkspector.yml b/.github/.linkspector.yml new file mode 100644 index 0000000000..b12cfab559 --- /dev/null +++ b/.github/.linkspector.yml @@ -0,0 +1,27 @@ +dirs: + - . +ignorePatterns: + - pattern: "/github/" + - pattern: "./actions" + - pattern: "./blob" + - pattern: "./issues" + - pattern: "./discussions" + - pattern: "./pulls" + - pattern: "https:\/\/platform.openai.com" + - pattern: "http:\/\/localhost" + - pattern: "http:\/\/127.0.0.1" + - pattern: "0001-spec.md" + - pattern: "0001-madr-architecture-decisions.md" + - pattern: "https://api.powerplatform.com/.default" + - pattern: "https://your-resource.openai.azure.com/" + - pattern: "http://host.docker.internal" +# excludedDirs: + # Folders which include links to localhost, since it's not ignored with regular expressions +baseUrl: https://github.com/microsoft/agent-framework/ +aliveStatusCodes: + - 200 + - 206 + - 429 + - 500 + - 503 +useGitIgnore: true diff --git a/.github/workflows/markdown-link-check.yml b/.github/workflows/markdown-link-check.yml new file mode 100644 index 0000000000..22270a8377 --- /dev/null +++ b/.github/workflows/markdown-link-check.yml @@ -0,0 +1,27 @@ +name: Check .md links + +on: + workflow_dispatch: + pull_request: + branches: ["main"] + +permissions: + contents: read + +jobs: + markdown-link-check: + runs-on: ubuntu-22.04 + # check out the latest version of the code + steps: + - uses: actions/checkout@v5 + with: + persist-credentials: false + + # Checks the status of hyperlinks in all files + - name: Run linkspector + uses: umbrelladocs/action-linkspector@v1 + with: + reporter: local + filter_mode: nofilter + fail_on_error: true + config_file: ".github/.linkspector.yml" diff --git a/docs/CONTRIBUTING_TO_DOCS.md b/docs/CONTRIBUTING_TO_DOCS.md deleted file mode 100644 index cd696bd730..0000000000 --- a/docs/CONTRIBUTING_TO_DOCS.md +++ /dev/null @@ -1,30 +0,0 @@ -# Contributing to DOCS - -To allow moving the docs to mslearn later, we are using language pivots as supported with mslearn markdown files. -This means that to make the docs easier to understand for users, we have a [PowerShell script](./generate-language-specific-docs.ps1) that generates language specific versions of the docs in separate folders. -The script strips out any pivots that are for a different language to the target. - -Therefore, write your docs in the [docs-templates](./docs-templates/) folder and then -generate the language-specific versions by just running the PowerShell script. - -```powershell -.\generate-language-specific-docs.ps1 -``` - -## Using pivots - -To have language-specific content, use the `::: zone pivot` syntax in your markdown file. -Note that when using a pivot you always have to have a section for both languages (csharp and python). - -```text -::: zone pivot="programming-language-csharp" - -C# specific content. - -::: zone-end -::: zone pivot="programming-language-python" - -Python specific content. - -::: zone-end -``` diff --git a/docs/decisions/0007-agent-filtering-middleware.md b/docs/decisions/0007-agent-filtering-middleware.md index 5cf1fcab0e..3855e8a9c8 100644 --- a/docs/decisions/0007-agent-filtering-middleware.md +++ b/docs/decisions/0007-agent-filtering-middleware.md @@ -47,9 +47,9 @@ This section provides an analysis of how other major AI agent frameworks handle | Haystack | Python | N (Pipeline-based interception) | N/A (Pipeline Components/Routers) | Relies on modular pipelines for implicit interception but lacks explicit middleware/filters; custom components can read/write data flow via routing/transformations, but this is compositional rather than hook-based interception. [Details](#haystack) | | OpenAI Swarm | Python | N | N/A | No explicit middleware/filters; interception requires custom wrappers or manual handling (e.g., function decorators, client subclassing), lacking native framework support for built-in components to accept such modifications. [Details](#openai-swarm) | | Atomic Agents | Python | N | N/A (Composable Components) | No explicit middleware/filters; modularity allows composable units but no dedicated interception hooks or callbacks for custom reading/modification mid-execution. [Details](#atomic-agents) | -| Smolagents (Hugging Face)| Python | N | N/A | No explicit support; focuses on simple agent building without interception mechanisms or hooks for reading/modifying execution. [Details](#smolagents) | -| Phidata (Agno) | Python | N | N/A | No explicit middleware/filters; agents use tools/memory but no interception hooks for custom reading/modification of calls. [Details](#phidata) | -| PromptFlow (Microsoft) | Python | N (Tracing only) | Tracing | Supports tracing for LLM interactions, acting as callbacks for debugging/iteration; tracing is read-only for observability/telemetry without options to modify context or intercept calls beyond logging. [Details](#promptflow) | +| Smolagents (Hugging Face)| Python | N | N/A | No explicit support; focuses on simple agent building without interception mechanisms or hooks for reading/modifying execution. [Details](#smolagents-hugging-face) | +| Phidata (Agno) | Python | N | N/A | No explicit middleware/filters; agents use tools/memory but no interception hooks for custom reading/modification of calls. [Details](#phidata-agno) | +| PromptFlow (Microsoft) | Python | N (Tracing only) | Tracing | Supports tracing for LLM interactions, acting as callbacks for debugging/iteration; tracing is read-only for observability/telemetry without options to modify context or intercept calls beyond logging. [Details](#promptflow-microsoft) | | n8n | JS/TS | Y (read/write) | Callbacks (inherited from LangChain) | AI Agent node uses LangChain under the hood, inheriting callbacks for observability; supports reading/modifying metadata or interrupting flow as in LangChain. [Details](#n8n) | ## Considered Options diff --git a/dotnet/README.md b/dotnet/README.md index 4b068a5f33..1d29dbbc2a 100644 --- a/dotnet/README.md +++ b/dotnet/README.md @@ -1,64 +1,41 @@ # Get Started with Microsoft Agent Framework for C# Developers -## Run the Minimal Console demo +## Samples -The Minimal Console demo is a simple console application which shows how to create and run an agent. +- [Getting Started with Agents](./samples/GettingStarted/Agents): basic agent creation and tool usage +- [Agent Provider Samples](./samples/GettingStarted/AgentProviders): samples showing different agent providers +- [Workflow Samples](./samples/GettingStarted/Workflows): advanced multi-agent patterns and workflow orchestration -Supported Platforms: -- .Net: net9.0, net8.0, netstandard2.0, net472 -- OS: Windows, macOS, Linux +## Quickstart -If you want to use the latest published packages following the instructions [here](../docs/FAQS.md). +### Basic Agent - .NET -### 1. Configure required environment variables +```c# +using System; +using Azure.AI.OpenAI; +using Azure.Identity; +using Microsoft.Agents.AI; -This samples uses Azure OpenAI by default so you need to set the following environment variable +var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!; +var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME")!; -``` powershell -$env:AZURE_OPENAI_ENDPOINT = "https://.openai.azure.com/" +var agent = new AzureOpenAIClient(new Uri(endpoint), new AzureCliCredential()) + .GetOpenAIResponseClient(deploymentName) + .CreateAIAgent(name: "HaikuBot", instructions: "You are an upbeat assistant that writes beautifully."); + +Console.WriteLine(await agent.RunAsync("Write a haiku about Microsoft Agent Framework.")); ``` -If you want to use OpenAI +## Examples & Samples -1. Edit [Program.cs](./demos/MinimalConsole/Program.cs) and change the following lines: - ```csharp - AIAgent agent = new AzureOpenAIClient( - new Uri(Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!), - new AzureCliCredential()) - .GetChatClient("gpt-4o-mini") - .CreateAIAgent( - instructions: "You are a helpful assistant, you can help the user with weather information.", - tools: [AIFunctionFactory.Create(GetWeather)]); - ``` - To this: - ```csharp - AIAgent agent = new OpenAIClient(Environment.GetEnvironmentVariable("OPENAI_API_KEY")!) - .GetChatClient("gpt-4o-mini") - .CreateAIAgent( - instructions: "You are a helpful assistant, you can help the user with weather information.", - tools: [AIFunctionFactory.Create(GetWeather)]); - ``` -2. Create an environment variable with your OpenAI key - ``` powershell - $env:OPENAI_API_KEY = "sk-..." - ``` +- [Getting Started with Agents](./samples/GettingStarted/Agents): basic agent creation and tool usage +- [Agent Provider Samples](./samples/GettingStarted/AgentProviders): samples showing different agent providers +- [Workflow Samples](./samples/GettingStarted/Workflows): advanced multi-agent patterns and workflow orchestration -### 2. Build the project - -```powershell -cd demos\MinimalConsole -dotnet build -``` - -### 3. Run the demonstration - -``` powershell -dotnet run --framework net9.0 --no-build -``` - -Sample output: - -``` -The weather in Amsterdam is currently cloudy, with a high temperature of 15°C. -``` +## Agent Framework Documentation +- [Documentation](https://learn.microsoft.com/agent-framework/) +- [Agent Framework Repository](https://github.com/microsoft/agent-framework) +- [Design Documents](../docs/design) +- [Architectural Decision Records](../docs/decisions) +- [MSFT Learn Docs](https://learn.microsoft.com/agent-framework/overview/agent-framework-overview) diff --git a/dotnet/samples/GettingStarted/AgentProviders/README.md b/dotnet/samples/GettingStarted/AgentProviders/README.md index aabf587785..515c7a8f81 100644 --- a/dotnet/samples/GettingStarted/AgentProviders/README.md +++ b/dotnet/samples/GettingStarted/AgentProviders/README.md @@ -4,7 +4,7 @@ These samples show how to create an AIAgent instance using various providers. This is not an exhaustive list, but shows a variety of the more popular options. For other samples that demonstrate how to use AIAgent instances, -see the [Getting Started Steps](../GettingStartedSteps/README.md) samples. +see the [Getting Started With Agents](../Agents/README.md) samples. ## Prerequisites diff --git a/dotnet/samples/GettingStarted/Agents/README.md b/dotnet/samples/GettingStarted/Agents/README.md index 0ba0383166..1078dafbfd 100644 --- a/dotnet/samples/GettingStarted/Agents/README.md +++ b/dotnet/samples/GettingStarted/Agents/README.md @@ -33,7 +33,7 @@ Before you begin, ensure you have the following prerequisites: |[Structured output with a simple agent](./Agent_Step05_StructuredOutput/)|This sample demonstrates how to use structured output with a simple agent| |[Persisted conversations with a simple agent](./Agent_Step06_PersistedConversations/)|This sample demonstrates how to persist conversations and reload them later. This is useful for cases where an agent is hosted in a stateless service| |[3rd party thread storage with a simple agent](./Agent_Step07_3rdPartyThreadStorage/)|This sample demonstrates how to store conversation history in a 3rd party storage solution| -|[Telemetry with a simple agent](./Agent_Step08_Telemetry/)|This sample demonstrates how to add telemetry to a simple agent| +|[Observability with a simple agent](./Agent_Step08_Observability/)|This sample demonstrates how to add telemetry to a simple agent| |[Dependency injection with a simple agent](./Agent_Step09_DependencyInjection/)|This sample demonstrates how to add and resolve an agent with a dependency injection container| |[Exposing a simple agent as MCP tool](./Agent_Step10_AsMcpTool/)|This sample demonstrates how to expose an agent as an MCP tool| |[Using images with a simple agent](./Agent_Step11_UsingImages/)|This sample demonstrates how to use image multi-modality with an AI agent| diff --git a/dotnet/samples/GettingStarted/README.md b/dotnet/samples/GettingStarted/README.md index dacf0b92cd..82bb0299d0 100644 --- a/dotnet/samples/GettingStarted/README.md +++ b/dotnet/samples/GettingStarted/README.md @@ -11,5 +11,5 @@ of the agent framework. |[Agent Providers](./AgentProviders/README.md)|Getting started with creating agents using various providers| |[Agent Open Telemetry](./AgentOpenTelemetry/README.md)|Getting started with OpenTelemetry for agents| |[Agent With OpenAI exchange types](./AgentWithOpenAI/README.md)|Using OpenAI exchange types with agents| -|[Workflow](./Workflow/README.md)|Getting started with Workflow| +|[Workflow](./Workflows/README.md)|Getting started with Workflow| |[Model Context Protocol](./ModelContextProtocol/README.md)|Getting started with Model Context Protocol| diff --git a/dotnet/samples/GettingStarted/Workflows/Declarative/README.md b/dotnet/samples/GettingStarted/Workflows/Declarative/README.md index f224c014b7..bf7e925015 100644 --- a/dotnet/samples/GettingStarted/Workflows/Declarative/README.md +++ b/dotnet/samples/GettingStarted/Workflows/Declarative/README.md @@ -58,7 +58,7 @@ az account get-access-token The sample workflows rely on agents defined in your Azure Foundry Project. -To create agents, run the [`Create.ps1`](../../../../../workflows/) script. +To create agents, run the [`Create.ps1`](../../../../../workflow-samples/setup/) script. This will create the agents used in the sample workflows in your Azure Foundry Project and format a script you can copy and use to configure your environment. > Note: `Create.ps1` relies upon the `AZURE_FOUNDRY_PROJECT_ENDPOINT` setting. diff --git a/dotnet/samples/GettingStarted/Workflows/README.md b/dotnet/samples/GettingStarted/Workflows/README.md index 17f8724efc..40d63d585b 100644 --- a/dotnet/samples/GettingStarted/Workflows/README.md +++ b/dotnet/samples/GettingStarted/Workflows/README.md @@ -28,7 +28,7 @@ Once completed, please proceed to other samples listed below. |--------|----------| | [Foundry Agents in Workflows](./Agents/FoundryAgent) | Demonstrates using Azure Foundry Agents within a workflow | | [Custom Agent Executors](./Agents/CustomAgentExecutors) | Shows how to create a custom agent executor for more complex scenarios | -| [Workflow as an Agent](./Agents/WorkflowAsAgent) | Illustrates how to encapsulate a workflow as an agent | +| [Workflow as an Agent](./Agents/WorkflowAsAnAgent) | Illustrates how to encapsulate a workflow as an agent | ### Concurrent Execution @@ -62,7 +62,7 @@ Once completed, please proceed to other samples listed below. | Sample | Concepts | |--------|----------| -| [DeclarativeWorkflow](./DeclarativeWorkflow) | Demonstrates execution of declartive workflows. | +| [Declarative](./Declarative) | Demonstrates execution of declartive workflows. | ### Checkpointing @@ -76,4 +76,4 @@ Once completed, please proceed to other samples listed below. | Sample | Concepts | |--------|----------| -| [Basic Human-in-the-Loop](./HumanInTheLoop/HumanIntheLoopBasic) | Introduces human-in-the-loop interaction using input ports and external requests | +| [Basic Human-in-the-Loop](./HumanInTheLoop/HumanInTheLoopBasic) | Introduces human-in-the-loop interaction using input ports and external requests | diff --git a/dotnet/samples/GettingStarted/Workflows/Visualization/README.md b/dotnet/samples/GettingStarted/Workflows/Visualization/README.md index 19befb7631..b0f21cd901 100644 --- a/dotnet/samples/GettingStarted/Workflows/Visualization/README.md +++ b/dotnet/samples/GettingStarted/Workflows/Visualization/README.md @@ -37,7 +37,3 @@ string mermaid = workflow.ToMermaidString(); // Generate DOT format string dotString = workflow.ToDotString(); ``` - -## Related Samples - -- [Map-Reduce Workflow Sample](../../../Workflows/Visualization/README.md): The workflow implementation being visualized \ No newline at end of file diff --git a/python/DEV_SETUP.md b/python/DEV_SETUP.md index dae1f5a1ba..3366c7aab9 100644 --- a/python/DEV_SETUP.md +++ b/python/DEV_SETUP.md @@ -90,8 +90,6 @@ There are two methods to manage keys, secrets, and endpoints: 2. Store them in a separate `.env` file, like `dev.env`, you can then pass that name into the constructor for most services, to the `env_file_path` parameter, see below. > Make sure to add `*.env` to your `.gitignore` file. -There are a lot of settings, for a more extensive list of settings, see [ALL_SETTINGS.md](./samples/concepts/setup/ALL_SETTINGS.md). - ### Example for file-based setup with OpenAI Chat Completions To configure a `.env` file with just the keys needed for OpenAI Chat Completions, you can create a `openai.env` (this name is just as an example, a single `.env` with all required keys is more common) file in the root of the `python` folder with the following content: diff --git a/python/README.md b/python/README.md index 0e79f85c33..7d30896f98 100644 --- a/python/README.md +++ b/python/README.md @@ -240,7 +240,7 @@ if __name__ == "__main__": - [Getting Started with Agents](https://github.com/microsoft/agent-framework/tree/main/python/samples/getting_started/agents): Basic agent creation and tool usage - [Chat Client Examples](https://github.com/microsoft/agent-framework/tree/main/python/samples/getting_started/chat_client): Direct chat client usage patterns - [Azure AI Integration](https://github.com/microsoft/agent-framework/tree/main/python/packages/azure-ai): Azure AI integration -- [Workflow Samples](https://github.com/microsoft/agent-framework/tree/main/python/samples/getting_started/workflow): Advanced multi-agent patterns +- [Workflow Samples](https://github.com/microsoft/agent-framework/tree/main/python/samples/getting_started/workflows): Advanced multi-agent patterns ## Agent Framework Documentation diff --git a/python/packages/core/README.md b/python/packages/core/README.md index a73f431c62..d7b0b324d4 100644 --- a/python/packages/core/README.md +++ b/python/packages/core/README.md @@ -220,7 +220,7 @@ if __name__ == "__main__": - [Getting Started with Agents](https://github.com/microsoft/agent-framework/tree/main/python/samples/getting_started/agents): Basic agent creation and tool usage - [Chat Client Examples](https://github.com/microsoft/agent-framework/tree/main/python/samples/getting_started/chat_client): Direct chat client usage patterns - [Azure AI Integration](https://github.com/microsoft/agent-framework/tree/main/python/packages/azure-ai): Azure AI integration -- [.NET Orchestration Samples](https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/GettingStarted/Orchestration): Advanced multi-agent patterns (.NET) +- [.NET Workflows Samples](https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/GettingStarted/Workflows): Advanced multi-agent patterns (.NET) ## Agent Framework Documentation diff --git a/python/samples/SAMPLE_GUIDELINES.md b/python/samples/SAMPLE_GUIDELINES.md index 5e2e6d2307..05c567a008 100644 --- a/python/samples/SAMPLE_GUIDELINES.md +++ b/python/samples/SAMPLE_GUIDELINES.md @@ -22,14 +22,6 @@ Try not to include too many concepts in a single sample. The goal is to demonstr The getting started samples are the simplest samples that require minimal setup. These samples should be named in the following format: `step_.py`. One exception to this rule is when the sample is a notebook, in which case the sample should be named in the following format: `_.ipynb`. -#### Concept Samples - -Concept samples under [./concepts](./concepts) should be grouped by feature or capability. These samples should be relatively short and demonstrate a specific concept. These samples are more advanced than the getting started samples. - -#### Demos - -Demos under [./demos](./demos) are full console applications that demonstrate a specific set of features or capabilities of Agent Framework, potentially with external dependencies. Each of the demos should have a README.md file that explains the purpose of the demo and how to run it. - ### **Incremental Complexity** Try to do a best effort to make sure that the samples are incremental in complexity. For example, in the getting started samples, each step should build on the previous step, and the concept samples should build on the getting started samples, same with the demos. diff --git a/python/samples/getting_started/observability/README.md b/python/samples/getting_started/observability/README.md index 6b9b7f7e10..dc3215a9fd 100644 --- a/python/samples/getting_started/observability/README.md +++ b/python/samples/getting_started/observability/README.md @@ -106,7 +106,7 @@ This folder contains different samples demonstrating how to use telemetry in var | Sample | Description | |--------|-------------| | [setup_observability_with_parameters.py](./setup_observability_with_parameters.py) | A simple example showing how to setup telemetry by passing in parameters to the `setup_observability()` function. | -| [setup_observability_with_env_vars.py](./setup_observability_with_env_vars.py) | A simple example showing how to setup telemetry with the `setup_observability()` function using environment variables. | +| [setup_observability_with_env_var.py](./setup_observability_with_env_var.py) | A simple example showing how to setup telemetry with the `setup_observability()` function using environment variables. | | [agent_observability.py](./agent_observability.py) | A simple example showing how to setup telemetry for an agentic application. | | [azure_ai_agent_observability.py](./azure_ai_agent_observability.py) | A simple example showing how to setup telemetry for an agentic application with an Azure AI project. | | [azure_ai_chat_client_with_observability.py](./azure_ai_chat_client_with_observability.py) | A simple example showing how to setup telemetry for a chat client with an Azure AI project. | @@ -244,4 +244,4 @@ Once your sample finishes running, navigate to in a web You won't have to deploy an Application Insights resource or install Docker to run Aspire Dashboard if you choose to inspect telemetry data in a console. However, it is difficult to navigate through all the spans and logs produced, so **this method is only recommended when you are just getting started**. -Use the guides from OpenTelemetry to setup exporters for [the console](https://opentelemetry.io/docs/languages/python/getting-started/), or use [manual_setup_console_output](./manual_setup_console_output.py) as a reference, just know that there are a lot of options you can setup and this is not a comprehensive example. +Use the guides from OpenTelemetry to setup exporters for [the console](https://opentelemetry.io/docs/languages/python/getting-started/), or use [advanced_manual_setup_console_output](./advanced_manual_setup_console_output.py) as a reference, just know that there are a lot of options you can setup and this is not a comprehensive example. diff --git a/python/samples/getting_started/workflows/README.md b/python/samples/getting_started/workflows/README.md index 3df70f847d..ef800107f1 100644 --- a/python/samples/getting_started/workflows/README.md +++ b/python/samples/getting_started/workflows/README.md @@ -36,7 +36,8 @@ Once comfortable with these, explore the rest of the samples below. |---|---|---| | Azure Chat Agents (Streaming) | [agents/azure_chat_agents_streaming.py](./agents/azure_chat_agents_streaming.py) | Add Azure agents as edges and handle streaming events | | Custom Agent Executors | [agents/custom_agent_executors.py](./agents/custom_agent_executors.py) | Create executors to handle agent run methods | -| Azure AI Chat Agents (Streaming) | [agents/azure_ai_chat_agents_streaming.py](./agents/azure_ai_chat_agents_streaming.py) | Add Azure AI agents as edges and handle streaming events | +| Azure AI Chat Agents (Streaming) | [agents/azure_ai_agents_streaming.py](./agents/azure_ai_agents_streaming.py) | Add Azure AI agents as edges and handle streaming events | +| Azure Chat Agents (Streaming) | [agents/azure_chat_agents_streaming.py](./agents/azure_chat_agents_streaming.py) | Add Azure Chat agents as edges and handle streaming events | | Workflow as Agent (Reflection Pattern) | [agents/workflow_as_agent_reflection_pattern.py](./agents/workflow_as_agent_reflection_pattern.py) | Wrap a workflow so it can behave like an agent (reflection pattern) | | Workflow as Agent + HITL | [agents/workflow_as_agent_human_in_the_loop.py](./agents/workflow_as_agent_human_in_the_loop.py) | Extend workflow-as-agent with human-in-the-loop capability | diff --git a/workflow-samples/README.md b/workflow-samples/README.md index b40d3d51a3..c02eaca12a 100644 --- a/workflow-samples/README.md +++ b/workflow-samples/README.md @@ -24,4 +24,4 @@ The sample workflows rely on agents defined in your Azure Foundry Project. To create agents, run the [`Create.ps1`](./setup) script. This will create the agents used in the sample workflows in your Azure Foundry Project and format a script you can copy and use to configure your environment. -> Note: `Create.ps1` relies upon the `AZURE_FOUNDRY_PROJECT_ENDPOINT` setting. See [README.md](../dotnet/demos/DeclarativeWorkflow/README.md) from the demo for configuration details. +> Note: `Create.ps1` relies upon the `AZURE_FOUNDRY_PROJECT_ENDPOINT` setting. See [README.md](../dotnet/samples/GettingStarted/Workflows/Declarative/README.md) from the demo for configuration details. diff --git a/workflow-samples/setup/README.md b/workflow-samples/setup/README.md index c8e9675ebf..2a43e776bb 100644 --- a/workflow-samples/setup/README.md +++ b/workflow-samples/setup/README.md @@ -11,4 +11,4 @@ These agent definitions are based on _Semantic Kernel_'s _Declarative Agent_ fea To create agents, run the [`Create.ps1`](./Create.ps1) script. This will create the agents for the sample workflows in your Azure Foundry Project and format a script you can copy and use to configure your environment. -> Note: `Create.ps1` relies upon the `FOUNDRY_PROJECT_ENDPOINT` setting. See [README.md](../../dotnet/demos/DeclarativeWorkflow/README.md) from the demo for configuration details. +> Note: `Create.ps1` relies upon the `FOUNDRY_PROJECT_ENDPOINT` setting. See [README.md](../../dotnet/samples/GettingStarted/Workflows/Declarative/README.md) from the demo for configuration details.