mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
67a8147151
* Python: Add Scaffolding for Durable AzureFunctions package to Agent Framework (#1823) * Add scafolding * update readme * add code owners and label * update owners * .NET: Durable extension: initial src and unit tests (#1900) * Python: Add Durable Agent Wrapper code (#1913) * add initial changes * Move code and add single sample * Update logger * Remove unused code * address PR comments * cleanup code and address comments --------- Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com> * Azure Functions .NET samples (#1939) * Python: Add Unit tests for Azurefunctions package (#1976) * Add Unit tests for Azurefunctions * remove duplicate import * .NET: [Feature Branch] Migrate state schema updates and support for agents as MCP tools (#1979) * Python: Add more samples for Azure Functions (#1980) * Move all samples * fix comments * remove dead lines * Make samples simpler * .NET: [Feature Branch] Durable Task extension integration tests (#2017) * .NET: [Feature Branch] Update OpenAI config for integration tests (#2063) * Python: Add Integration tests for AzureFunctions (#2020) * Add Integration tests * Remove DTS extension * 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> * Add pyi file for type safety * Add samples in readme * Updated all readme instructions * Address comments * Update readmes * Fix requirements * Address comments --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * .NET: [Feature Branch] Update dotnet-build-and-test.yml to support integration tests (#2070) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix DTS startup issue and improve logging (#2103) * .NET: [Feature Branch] Introduce Azure OpenAI config for .NET pipeline (#2106) Also fixes an issue where we were trying to start docker containers for integration tests on Windows, which doesn't work. Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix uv.lock after merge * Python: Add README for Azure Functions samples setup (#2100) * Add README for Azure Functions samples setup Added setup instructions for Azure Functions samples, including environment setup, virtual environment creation, and running samples. * Update python/samples/getting_started/azure_functions/README.md 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> * Apply suggestion from @Copilot 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> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Laveesh Rohra <larohra@microsoft.com> * Fix or remove broken markdown file links (#2115) * .NET: [Feature Branch] Update HTTP API to be consistent across languages (#2118) * Python: Fix AzureFunctions Integration Tests (#2116) * Add Identity Auth to samples * Update python/samples/getting_started/azure_functions/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update python/samples/getting_started/azure_functions/01_single_agent/function_app.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update python/samples/getting_started/azure_functions/02_multi_agent/function_app.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update python/samples/getting_started/azure_functions/06_multi_agent_orchestration_conditionals/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Python: Fix Http Schema (#2112) * Rename to threadid * Respond in plain text * Make snake-case * Add http prefix * rename to wait-for-response * Add query param check * address comments * .NET: Remove IsPackable=false in preparation for nuget release (#2142) * Python: Move `azurefunctions` to `azure` for import (#2141) * Move import to Azure * fix mypy * Update python/packages/azurefunctions/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add missing types * Address comments --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update python/packages/azurefunctions/pyproject.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update python/packages/azurefunctions/agent_framework_azurefunctions/__init__.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix imports * Address PR feedback from westey-m (#2150) - Adds a link from the /dotnet/samples/README.md to /dotnet/samples/AzureFunctions - Make DurableAgentThread deserialization internal for future-proofing - Update JSON serialization logic to address recently discovered issues with source generator serialization * Address comments (#2160) --------- Co-authored-by: Laveesh Rohra <larohra@microsoft.com> Co-authored-by: Chris Gillum <cgillum@microsoft.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Anirudh Garg <anirudhg@microsoft.com>
90 lines
2.7 KiB
Markdown
90 lines
2.7 KiB
Markdown
# Single Agent Sample
|
|
|
|
This sample demonstrates how to use the Durable Agent Framework (DAFx) to create a simple Azure Functions app that hosts a single AI agent and provides direct HTTP API access for interactive conversations.
|
|
|
|
## Key Concepts Demonstrated
|
|
|
|
- Using the Microsoft Agent Framework to define a simple AI agent with a name and instructions.
|
|
- Registering agents with the Function app and running them using HTTP.
|
|
- Conversation management (via session IDs) for isolated interactions.
|
|
|
|
## Environment Setup
|
|
|
|
See the [README.md](../README.md) file in the parent directory for more information on how to configure the environment, including how to install and run common sample dependencies.
|
|
|
|
## Running the Sample
|
|
|
|
With the environment setup and function app running, you can test the sample by sending an HTTP request to the agent endpoint.
|
|
|
|
You can use the `demo.http` file to send a message to the agent, or a command line tool like `curl` as shown below:
|
|
|
|
Bash (Linux/macOS/WSL):
|
|
|
|
```bash
|
|
curl -X POST http://localhost:7071/api/agents/Joker/run \
|
|
-H "Content-Type: text/plain" \
|
|
-d "Tell me a joke about a pirate."
|
|
```
|
|
|
|
PowerShell:
|
|
|
|
```powershell
|
|
Invoke-RestMethod -Method Post `
|
|
-Uri http://localhost:7071/api/agents/Joker/run `
|
|
-ContentType text/plain `
|
|
-Body "Tell me a joke about a pirate."
|
|
```
|
|
|
|
You can also send JSON requests:
|
|
|
|
```bash
|
|
curl -X POST http://localhost:7071/api/agents/Joker/run \
|
|
-H "Content-Type: application/json" \
|
|
-H "Accept: application/json" \
|
|
-d '{"message": "Tell me a joke about a pirate."}'
|
|
```
|
|
|
|
To continue a conversation, include the `thread_id` in the query string or JSON body:
|
|
|
|
```bash
|
|
curl -X POST "http://localhost:7071/api/agents/Joker/run?thread_id=@dafx-joker@your-thread-id" \
|
|
-H "Content-Type: application/json" \
|
|
-H "Accept: application/json" \
|
|
-d '{"message": "Tell me another one."}'
|
|
```
|
|
|
|
The response from the agent will be displayed in the terminal where you ran `func start`. The expected `text/plain` output will look something like:
|
|
|
|
```text
|
|
Why don't pirates ever learn the alphabet? Because they always get stuck at "C"!
|
|
```
|
|
|
|
The expected `application/json` output will look something like:
|
|
|
|
```json
|
|
{
|
|
"status": 200,
|
|
"thread_id": "@dafx-joker@your-thread-id",
|
|
"response": {
|
|
"Messages": [
|
|
{
|
|
"AuthorName": "Joker",
|
|
"CreatedAt": "2025-11-11T12:00:00.0000000Z",
|
|
"Role": "assistant",
|
|
"Contents": [
|
|
{
|
|
"Type": "text",
|
|
"Text": "Why don't pirates ever learn the alphabet? Because they always get stuck at 'C'!"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"Usage": {
|
|
"InputTokenCount": 78,
|
|
"OutputTokenCount": 36,
|
|
"TotalTokenCount": 114
|
|
}
|
|
}
|
|
}
|
|
```
|