Contoso电子人工智能支持——端到端。NET人工智能演示
一个全面的演示应用程序,展示了 满了。NET人工智能堆栈 在现实的客户支持场景中 dotnet run 该命令启动6个相互连接的服务,这些服务可以摄取产品文档、编排多代理工作流、通过MCP调用外部工具、使用Python分析情绪,并提供流式Sequencechat UI——所有这些都可以通过Aspire仪表板观察到。
这表明了什么
| 技术 | 它在这里做什么 |
|---|---|
| 微软。扩展。AI(MEAI) | IChatClient / IEmbeddingGenerator 无处不在的抽象概念——零供应商锁定 |
| 微软代理框架(MAF) | 3个代理(研究、情感、响应)同时组成→顺序工作流 |
| 模型上下文协议(MCP) | MCP服务器公开订单查找、保修检查和更换工具 |
| 数据摄入+矢量数据 | Markdown文档→ 语义块→ 带自动嵌入的SQLite矢量存储 |
| .NET Aspire | 通过服务发现、健康检查和分布式跟踪协调所有服务 |
| Python多边形 | FastAPI+拥抱脸 transformers 用于确定性情绪分析 |
| AI评估 | 5个测试场景×6个HTML报告的质量评估员 |
建筑
┌──────────────────────────────────────────────────────────────┐
│ ContosoSupport.AppHost │
│ (Aspire Orchestration) │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌──────────────────────────────────────┐ │
│ │ Azure │ │ ContosoSupport.AgentWorker │ │
│ │ OpenAI │◄───│ ┌───────────┐ ┌───────────────┐ │ │
│ │ - gpt-4.1 │ │ │ Research │ │ Sentiment │ │ │
│ │ - embedding │ │ │ Agent │ │ Proxy Agent │ │ │
│ └──────┬───────┘ │ │ (LLM + │ │ (→ Python) │ │ │
│ │ │ │ vectors) │ │ │ │ │
│ │ │ └─────┬─────┘ └───────┬───────┘ │ │
│ │ │ └──── concurrent ────┘ │ │
│ ┌──────▼───────┐ │ │ │ │
│ │ Ingestion │ │ ┌──────▼──────┐ │ │
│ │ Worker │ │ │ Response │ │ │
│ │ (markdown │ │ │ Agent │ │ │
│ │ → vectors) │ │ │ (LLM + MCP │ │ │
│ └──────┬───────┘ │ │ tools) │ │ │
│ │ │ └─────────────┘ │ │
│ ┌─────▼─────┐ └──────────────────────────────────────┘ │
│ │ SQLite │ ▲ │
│ │ Vector │◄───────────────────┘ (search) │
│ │ Store │ │
│ └───────────┘ ┌──────────────┐ ┌────────────────┐ │
│ │ MCP Server │ │ Python │ │
│ │ - orders │ │ Sentiment │ │
│ │ - warranty │ │ (HuggingFace) │ │
│ │ - replace │ │ FastAPI │ │
│ └──────────────┘ └────────────────┘ │
│ │
│ ┌──────────────────────────┐ ┌────────────────────────┐ │
│ │ ContosoSupport.Web │ │ Aspire Dashboard │ │
│ │ (Blazor Chat UI) │ │ (traces/logs/metrics) │ │
│ └──────────────────────────┘ └────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘请求流:用户消息→ DateTimeWeb→ 代理人→ 研究‖情感(并发)→ 响应(顺序,使用MCP工具)→ 流式回复
快速开始
选项A:GitHub代码空间(推荐)
最快的跑步方式-- 无需本地设置.
](https://codespaces.new/luisquintanilla/dotnet-ai-e2e?quickstart=1)
- 单击上面的按钮(或 Code → 代码空间→ 新代码空间)
- 等待devcontainer构建(约2分钟——安装.NET 10、Python 3.12、uv、Aspire CLI)
- 配置您的Azure OpenAI连接:
cd ContosoSupport/ContosoSupport.AppHost
# Managed Identity (recommended — no API key needed)
az login
dotnet user-secrets set "ConnectionStrings:openai" "https://YOUR-ACCOUNT.openai.azure.com/"
# Or with an API Key
dotnet user-secrets set "ConnectionStrings:openai" "Endpoint=https://YOUR-ACCOUNT.openai.azure.com/;Key=YOUR-API-KEY"- 运行所有内容:
cd ContosoSupport
aspire run- 打开 网络 从Aspire仪表板的端点开始聊天!
Azure OpenAI要求:你需要一个Azure OpenAI资源gpt-4.1和text-embedding-3-small模型部署。对于托管身份,请确保您的帐户具有 认知服务OpenAI用户 角色。
______________________________________________________________________
方案B:地方发展
Prerequisites for local setup
- .NET 10 SDK
- Aspire CLI (
dotnet tool install -g aspire) - Python 3.12+ 和 紫外线
- Azure命令行界面 (
az login) - Azure OpenAI 资源与
gpt-4.1和text-embedding-3-small部署
# 1. Clone and build
git clone https://github.com/YOUR-ORG/dotnet-ai-e2e.git
cd dotnet-ai-e2e
dotnet build ContosoSupport
# 2. Configure Azure OpenAI credentials
cd ContosoSupport/ContosoSupport.AppHost
dotnet user-secrets set "ConnectionStrings:openai" "https://YOUR-ACCOUNT.openai.azure.com/"
cd ..
# 3. Run everything
aspire run # or: dotnet run --project ContosoSupport.AppHostAspire启动所有6项服务,并打开仪表板,显示健康状态、分布式跟踪、结构化日志和OpenTetry指标。
试试看
打开 网络 Aspire仪表板中显示的端点。尝试以下提示:
- *“告诉我X500耳机的情况”* --tests研究代理+矢量搜索
- *“我的耳机在2个月后坏了,订购ORD-2025-1001”* --测试保修检查+MCP工具
- *“这是我第三次打电话了!没人帮我!!”* --测试情绪代理(负面)+移情反应
项目结构
dotnet-ai-e2e/
├── .devcontainer/ # Codespaces / devcontainer config
├── ContosoSupport/ # .NET solution
│ ├── ContosoSupport.slnx # Solution file
│ ├── ContosoSupport.AppHost/ # Aspire orchestration
│ ├── ContosoSupport.ServiceDefaults/ # Shared OTel + service discovery
│ ├── ContosoSupport.Shared/ # Shared models (IngestedChunk)
│ ├── ContosoSupport.Ingestion/ # Worker: markdown → vector store
│ │ └── data/ # 15 mock Contoso documents
│ ├── ContosoSupport.AgentWorker/ # MAF agents + workflow
│ ├── ContosoSupport.McpServer/ # MCP tools (orders, warranty)
│ ├── ContosoSupport.Web/ # Blazor chat frontend
│ ├── ContosoSupport.Evaluation/ # AI quality evaluation (xUnit)
│ ├── PythonSentiment/ # Python FastAPI sentiment service
│ │ ├── pyproject.toml
│ │ └── src/main.py
│ ├── docs/ # Layer-by-layer walkthrough
│ └── README.md # Solution-level readme
└── README.md # ← You are here技术栈深潜
第1层——MEAI基础
每项服务都使用 IChatClient 和 IEmbeddingGenerator 来自微软。扩展。AI。这意味着将Azure OpenAI替换为Ollama、Anthropic或任何其他提供商需要更改一行注册码——业务逻辑不变。
第二层——知识(数据摄入+矢量数据)
Ingestion工人看着 data/ 目录。当markdown文件更改时,它会通过一个 SemanticSimilarityChunker,通过以下方式生成嵌入 text-embedding-3-small,并将其存储在SQLite矢量数据库中。AgentWorker的研究代理查询同一个数据库。
第3层——业务集成(MCP)
MCP服务器公开了4个带有模拟数据的工具: lookup_order, get_customer_orders, check_warranty, initiate_replacement响应代理通过模型上下文协议发现并调用这些工具,该协议与Claude、Cursor和其他AI工具使用的标准相同。
第4层——代理智能(MAF)
三个专业代理组成了一个工作流程:
- 研究代理:LLM+矢量搜索工具→ 查找相关产品文档
- 情感代理:自定义
AIAgent子类→ 调用Python服务(无LLM成本) - 响应代理:LLM+MCP工具→ 代表客户采取行动
研究和情绪运行 同时,然后将它们的组合上下文输入到Response中 依次.
第5层——多边形(Python)
情感分析使用HuggingFace transformers --一个不需要LLM的已解决的ML问题。Python服务通过Aspire的 AddUvicornApp() 自动地 uv 依赖性管理。
第6层——编排(Aspire)
一 aspire run (或 dotnet run --project ContosoSupport.AppHost)启动一切:。NET服务、Python服务、服务发现、健康检查和可观察性仪表板。
第7层——质量(AI评估)
5个测试场景根据6个质量指标(相关性、基础性、连贯性、流畅性、完整性、检索性)评估系统。与一起跑步 dotnet test 并生成HTML报告 dotnet aieval report.
运行评估
# Set the judge LLM credentials (same Azure OpenAI or a different one)
cd ContosoSupport\ContosoSupport.Evaluation
# Set via environment variables or appsettings
# Run the evaluation suite
dotnet test ContosoSupport\ContosoSupport.Evaluation
# Generate HTML report
cd ContosoSupport
dotnet aieval report文档
看 ContosoSupport/docs/ 有关详细的逐层文档:
| 文档 | 主题 |
|---|---|
| 概述 | 架构和技术栈 |
| 01-基础 | 微软。扩展。AI |
| 02--知识 | 数据摄入+矢量数据 |
| 03--集成 | 模型上下文协议 |
| 04-情报 | Microsoft代理框架 |
| 05--多边形 | Python情绪分析 |
| 06--编排 | .NET Aspire |
| 07--质量 | AI评估 |
| 08--请求流 | 端到端跟踪演练 |
| 冒烟测试 | 分步手动测试指南 |
模拟数据
这 ContosoSupport.Ingestion/data/ 目录包含15个逼真的Contoso Electronics文档(复制以自动生成输出):
| 类别 | 文件 | 示例 |
|---|---|---|
| 产品(5) | contoso-x500-headphones.md, contoso-s200-speaker.md, ... | 规格、定价、保修期 |
| 政策(5) | warranty-policy.md, return-policy.md, ... | 业务规则、流程步骤 |
| 支持(5) | troubleshooting-headphones.md, faq-orders.md, ... | 如何操作,升级路径 |
模拟订单和客户被硬编码在 ContosoSupport.McpServer/MockData.cs.
许可证
这是一个用于教育目的的演示/示例应用程序。
