端到端AI客户支持演示

一个展示完整.NET AI技术栈的端到端客户支持场景演示应用,涵盖多智能体工作流、外部工具调用、情感分析和实时聊天界面。

  • by luisquintanilla
  • C#
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 luisquintanilla/dotnet-ai-e2e

使用说明

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代码空间(推荐)

最快的跑步方式-- 无需本地设置.

  1. 单击上面的按钮(或 Code → 代码空间→ 新代码空间)
  2. 等待devcontainer构建(约2分钟——安装.NET 10、Python 3.12、uv、Aspire CLI)
  3. 配置您的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"
  1. 运行所有内容:
cd ContosoSupport
aspire run
  1. 打开 网络 从Aspire仪表板的端点开始聊天!

Azure OpenAI要求:你需要一个Azure OpenAI资源 gpt-4.1 和 text-embedding-3-small 模型部署。对于托管身份,请确保您的帐户具有 认知服务OpenAI用户 角色。


方案B:地方发展

Prerequisites for local setup
# 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.AppHost

Aspire启动所有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.

许可证

这是一个用于教育目的的演示/示例应用程序。