mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
5e056b672e
* Python: Provider-leading client design & OpenAI package extraction Major refactoring of the Python Agent Framework client architecture: - Extract OpenAI clients into new `agent-framework-openai` package - Core package no longer depends on openai, azure-identity, azure-ai-projects - Rename clients for discoverability: OpenAIResponsesClient → OpenAIChatClient, OpenAIChatClient → OpenAIChatCompletionClient - Unify `model_id`/`deployment_name`/`model_deployment_name` → `model` param - New FoundryChatClient for Azure AI Foundry Responses API - New FoundryAgent/FoundryAgentClient for connecting to pre-configured Foundry agents - Remove OpenAIBase/OpenAIConfigMixin from non-deprecated client MRO - Deprecate AzureOpenAI* clients, AzureAIClient, OpenAIAssistantsClient - Reorganize samples: azure_openai+azure_ai+azure_ai_agent → azure/ - ADR-0020: Provider-Leading Client Design Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: missing Agent imports in samples, .model_id → .model in foundry_local sample Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: CI failures — mypy errors, coverage targets, sample imports - azure-ai mypy: add type ignores for TypedDict total=, model arg, forward ref - Coverage: replace core.azure/openai targets with openai package target - project_provider: add type annotation for opts dict Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: populate openai .pyi stub, fix broken README links, coverage targets Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fixes * updated observabilitty * reset azure init.pyi * fix errors * updated adr number * fix foundry local * fixed not renamed docstrings and comments, and added deprecated markers to old classes * fix tests and pyprojects * fix test vars * updated function tests * update durable * updated test setup for functions * Fix Foundry auth in workflow samples Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Stabilize Python integration workflows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update hosting samples for Foundry Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trigger full CI rerun Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trigger CI rerun again Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * trigger rerun * trigger rerun * fix for litellm * undo durabletask changes * Move Foundry APIs into foundry namespace Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Foundry pyproject formatting Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split provider samples by Foundry surface Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Restore hosting sample requirements Also fix the Foundry Local sample link after the provider sample move. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * updated tests * udpated foundry integration tests * removed dist from azurefunctions tests * Use separate Foundry clients for concurrent agents Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix client setup in azfunc and durable * disabled two tests * updated setup for some function and durable tests * improved azure openai setup with new clients * ignore deprecated * fixes * skip 11 * remove openai assistants int tests --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
818 lines
32 KiB
YAML
818 lines
32 KiB
YAML
name: Python - Sample Validation
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: "0 0 * * *" # Run at midnight UTC daily
|
|
|
|
env:
|
|
# Configure a constant location for the uv cache
|
|
UV_CACHE_DIR: /tmp/.uv-cache
|
|
# GitHub Copilot configuration
|
|
GITHUB_COPILOT_MODEL: claude-opus-4.6
|
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
|
|
jobs:
|
|
validate-01-get-started:
|
|
name: Validate 01-get-started
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Required configuration for get-started samples
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME=$AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=$AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 01-get-started --save-report --report-name 01-get-started
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-01-get-started
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents:
|
|
name: Validate 02-agents
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Azure AI configuration
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure OpenAI configuration
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__EMBEDDINGDEPLOYMENTNAME }}
|
|
# OpenAI configuration
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
|
|
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
|
|
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
# GitHub MCP
|
|
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
|
|
OPENAI_MODEL: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
# Observability
|
|
ENABLE_INSTRUMENTATION: "true"
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_AI_MODEL_DEPLOYMENT_NAME=$AZURE_AI_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=$AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME=$AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=$AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME" >> .env
|
|
echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env
|
|
echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env
|
|
echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env
|
|
echo "GITHUB_PAT=$GITHUB_PAT" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents --exclude providers --save-report --report-name 02-agents
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-openai:
|
|
name: Validate 02-agents/providers/openai
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
|
|
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
|
|
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env
|
|
echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env
|
|
echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/openai --save-report --report-name 02-agents-openai
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-openai
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-azure-openai:
|
|
name: Validate 02-agents/providers/azure_openai
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=$AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME=$AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/azure_openai --save-report --report-name 02-agents-azure-openai
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-azure-openai
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-azure-ai:
|
|
name: Validate 02-agents/providers/azure_ai
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
AZURE_AI_CHAT_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_AI_EMBEDDING_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__EMBEDDINGDEPLOYMENTNAME }}
|
|
BING_CONNECTION_ID: ${{ secrets.BING_CONNECTION_ID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_AI_MODEL_DEPLOYMENT_NAME=$AZURE_AI_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_AI_CHAT_MODEL_DEPLOYMENT_NAME=$AZURE_AI_CHAT_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_AI_EMBEDDING_MODEL_DEPLOYMENT_NAME=$AZURE_AI_EMBEDDING_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "BING_CONNECTION_ID=$BING_CONNECTION_ID" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/azure_ai --save-report --report-name 02-agents-azure-ai
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-azure-ai
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-azure-ai-agent:
|
|
name: Validate 02-agents/providers/azure_ai_agent
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_AI_MODEL_DEPLOYMENT_NAME=$AZURE_AI_MODEL_DEPLOYMENT_NAME" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/azure_ai_agent --save-report --report-name 02-agents-azure-ai-agent
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-azure-ai-agent
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-anthropic:
|
|
name: Validate 02-agents/providers/anthropic
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
ANTHROPIC_CHAT_MODEL_ID: ${{ vars.ANTHROPIC_CHAT_MODEL_ID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY" >> .env
|
|
echo "ANTHROPIC_CHAT_MODEL_ID=$ANTHROPIC_CHAT_MODEL_ID" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/anthropic --save-report --report-name 02-agents-anthropic
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-anthropic
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-github-copilot:
|
|
name: Validate 02-agents/providers/github_copilot
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/github_copilot --save-report --report-name 02-agents-github-copilot
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-github-copilot
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-amazon:
|
|
name: Validate 02-agents/providers/amazon
|
|
if: false # Temporarily disabled - requires AWS credentials
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
BEDROCK_CHAT_MODEL_ID: ${{ vars.BEDROCK__CHATMODELID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/amazon --save-report --report-name 02-agents-amazon
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-amazon
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-ollama:
|
|
name: Validate 02-agents/providers/ollama
|
|
if: false # Temporarily disabled - requires local Ollama server
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
OLLAMA_MODEL: ${{ vars.OLLAMA__MODEL }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/ollama --save-report --report-name 02-agents-ollama
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-ollama
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-foundry-local:
|
|
name: Validate 02-agents/providers/foundry_local
|
|
if: false # Temporarily disabled - requires local Foundry setup
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/foundry_local --save-report --report-name 02-agents-foundry-local
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-foundry-local
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-copilotstudio:
|
|
name: Validate 02-agents/providers/copilotstudio
|
|
if: false # Temporarily disabled - requires Copilot Studio setup
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
COPILOTSTUDIOAGENT__ENVIRONMENTID: ${{ secrets.COPILOTSTUDIOAGENT__ENVIRONMENTID }}
|
|
COPILOTSTUDIOAGENT__SCHEMANAME: ${{ secrets.COPILOTSTUDIOAGENT__SCHEMANAME }}
|
|
COPILOTSTUDIOAGENT__TENANTID: ${{ secrets.COPILOTSTUDIOAGENT__TENANTID }}
|
|
COPILOTSTUDIOAGENT__AGENTAPPID: ${{ secrets.COPILOTSTUDIOAGENT__AGENTAPPID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "COPILOTSTUDIOAGENT__ENVIRONMENTID=$COPILOTSTUDIOAGENT__ENVIRONMENTID" >> .env
|
|
echo "COPILOTSTUDIOAGENT__SCHEMANAME=$COPILOTSTUDIOAGENT__SCHEMANAME" >> .env
|
|
echo "COPILOTSTUDIOAGENT__TENANTID=$COPILOTSTUDIOAGENT__TENANTID" >> .env
|
|
echo "COPILOTSTUDIOAGENT__AGENTAPPID=$COPILOTSTUDIOAGENT__AGENTAPPID" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/copilotstudio --save-report --report-name 02-agents-copilotstudio
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-copilotstudio
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-02-agents-custom:
|
|
name: Validate 02-agents/providers/custom
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 02-agents/providers/custom --save-report --report-name 02-agents-custom
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-02-agents-custom
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-03-workflows:
|
|
name: Validate 03-workflows
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Azure AI configuration
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure OpenAI configuration
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_AI_MODEL_DEPLOYMENT_NAME=$AZURE_AI_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=$AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME=$AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 03-workflows --save-report --report-name 03-workflows
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-03-workflows
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-04-hosting:
|
|
name: Validate 04-hosting
|
|
if: false # Temporarily disabled because of sample complexity
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Azure AI configuration
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure OpenAI configuration
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# A2A configuration
|
|
A2A_AGENT_HOST: http://localhost:5001/
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 04-hosting --save-report --report-name 04-hosting
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-04-hosting
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-05-end-to-end:
|
|
name: Validate 05-end-to-end
|
|
if: false # Temporarily disabled because of sample complexity
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Azure AI configuration
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure OpenAI configuration
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure AI Search (for evaluation samples)
|
|
AZURE_SEARCH_ENDPOINT: ${{ secrets.AZURE_SEARCH_ENDPOINT }}
|
|
AZURE_SEARCH_API_KEY: ${{ secrets.AZURE_SEARCH_API_KEY }}
|
|
AZURE_SEARCH_INDEX_NAME: ${{ secrets.AZURE_SEARCH_INDEX_NAME }}
|
|
# Evaluation sample
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME_WORKFLOW: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir 05-end-to-end --save-report --report-name 05-end-to-end
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-05-end-to-end
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-autogen-migration:
|
|
name: Validate autogen-migration
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Azure AI configuration
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure OpenAI configuration
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
# OpenAI configuration
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
|
|
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
|
|
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
OPENAI_MODEL: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_AI_MODEL_DEPLOYMENT_NAME=$AZURE_AI_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=$AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" >> .env
|
|
echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env
|
|
echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env
|
|
echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir autogen-migration --save-report --report-name autogen-migration
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-autogen-migration
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
validate-semantic-kernel-migration:
|
|
name: Validate semantic-kernel-migration
|
|
runs-on: ubuntu-latest
|
|
environment: integration
|
|
env:
|
|
# Azure AI configuration
|
|
AZURE_AI_PROJECT_ENDPOINT: ${{ vars.AZURE_AI_PROJECT_ENDPOINT }}
|
|
AZURE_AI_MODEL_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# Azure OpenAI configuration
|
|
AZURE_OPENAI_ENDPOINT: ${{ vars.AZUREOPENAI__ENDPOINT }}
|
|
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
|
|
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
|
|
# OpenAI configuration
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
|
|
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
|
|
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
OPENAI_MODEL: ${{ vars.OPENAI__RESPONSESMODELID }}
|
|
# Copilot Studio
|
|
COPILOTSTUDIOAGENT__ENVIRONMENTID: ${{ secrets.COPILOTSTUDIOAGENT__ENVIRONMENTID }}
|
|
COPILOTSTUDIOAGENT__SCHEMANAME: ${{ secrets.COPILOTSTUDIOAGENT__SCHEMANAME }}
|
|
COPILOTSTUDIOAGENT__TENANTID: ${{ secrets.COPILOTSTUDIOAGENT__TENANTID }}
|
|
COPILOTSTUDIOAGENT__AGENTAPPID: ${{ secrets.COPILOTSTUDIOAGENT__AGENTAPPID }}
|
|
defaults:
|
|
run:
|
|
working-directory: python
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Setup environment
|
|
uses: ./.github/actions/sample-validation-setup
|
|
with:
|
|
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
|
os: ${{ runner.os }}
|
|
|
|
- name: Create .env for samples
|
|
run: |
|
|
echo "AZURE_AI_PROJECT_ENDPOINT=$AZURE_AI_PROJECT_ENDPOINT" >> .env
|
|
echo "AZURE_AI_MODEL_DEPLOYMENT_NAME=$AZURE_AI_MODEL_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" >> .env
|
|
echo "AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=$AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" >> .env
|
|
echo "AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME=$AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME" >> .env
|
|
echo "OPENAI_API_KEY=$OPENAI_API_KEY" >> .env
|
|
echo "OPENAI_CHAT_MODEL_ID=$OPENAI_CHAT_MODEL_ID" >> .env
|
|
echo "OPENAI_RESPONSES_MODEL_ID=$OPENAI_RESPONSES_MODEL_ID" >> .env
|
|
echo "COPILOTSTUDIOAGENT__ENVIRONMENTID=$COPILOTSTUDIOAGENT__ENVIRONMENTID" >> .env
|
|
echo "COPILOTSTUDIOAGENT__SCHEMANAME=$COPILOTSTUDIOAGENT__SCHEMANAME" >> .env
|
|
echo "COPILOTSTUDIOAGENT__TENANTID=$COPILOTSTUDIOAGENT__TENANTID" >> .env
|
|
echo "COPILOTSTUDIOAGENT__AGENTAPPID=$COPILOTSTUDIOAGENT__AGENTAPPID" >> .env
|
|
|
|
- name: Run sample validation
|
|
run: |
|
|
cd scripts && uv run python -m sample_validation --subdir semantic-kernel-migration --save-report --report-name semantic-kernel-migration
|
|
|
|
- name: Upload validation report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-report-semantic-kernel-migration
|
|
path: python/samples/sample_validation/reports/
|
|
|
|
aggregate-results:
|
|
name: Aggregate Results
|
|
runs-on: ubuntu-latest
|
|
if: always()
|
|
needs:
|
|
- validate-01-get-started
|
|
- validate-02-agents
|
|
- validate-02-agents-openai
|
|
- validate-02-agents-azure-openai
|
|
- validate-02-agents-azure-ai
|
|
- validate-02-agents-azure-ai-agent
|
|
- validate-02-agents-anthropic
|
|
- validate-02-agents-github-copilot
|
|
- validate-02-agents-amazon
|
|
- validate-02-agents-ollama
|
|
- validate-02-agents-foundry-local
|
|
- validate-02-agents-copilotstudio
|
|
- validate-02-agents-custom
|
|
- validate-03-workflows
|
|
- validate-04-hosting
|
|
- validate-05-end-to-end
|
|
- validate-autogen-migration
|
|
- validate-semantic-kernel-migration
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Download all validation reports
|
|
uses: actions/download-artifact@v7
|
|
with:
|
|
pattern: validation-report-*
|
|
path: reports/
|
|
merge-multiple: true
|
|
|
|
- name: Restore validation history
|
|
id: cache-restore
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: validation-history/
|
|
key: validation-history-${{ github.run_id }}
|
|
restore-keys: |
|
|
validation-history-
|
|
|
|
- name: Aggregate results and generate trend report
|
|
run: |
|
|
python3 python/scripts/sample_validation/aggregate.py \
|
|
reports/ \
|
|
validation-history/history.json \
|
|
trend-report.md
|
|
|
|
- name: Write trend report to job summary
|
|
run: cat trend-report.md >> "$GITHUB_STEP_SUMMARY"
|
|
|
|
- name: Save validation history
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: validation-history/
|
|
key: validation-history-${{ github.run_id }}
|
|
|
|
- name: Upload trend report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: validation-trend-report
|
|
path: trend-report.md
|