你知道吗?.NET 是一种非常灵活的语言,可以用来构建前端和后端应用程序。除此之外,.NET 还能够轻松地构建人工智能增强的应用程序。这个仓库提供了几个使用 Microsoft.Extensions.AI、Azure AI Foundry、Foundry Local 和 MCP 服务器/客户端的示例应用。
注意:这是一个临时解决方案,直到官方的 NuGet 包准备好。
克隆 Foundry Local 仓库。
git clone https://github.com/microsoft/Foundry-Local.git foundry-local
构建 C# SDK。
cd foundry-local/sdk/cs
dotnet restore && dotnet build
获取 NuGet 包的位置。
# bash/zsh
FOUNDRY_LOCAL_NUGET_PACKAGE_PATH=$(find $(pwd) -name "*.nupkg" -type f -exec dirname {} \; | sort -u)
# PowerShell
$FOUNDRY_LOCAL_NUGET_PACKAGE_PATH = $(Get-ChildItem -Path . -Filter *.nupkg -Recurse).Directory.FullName
克隆此仓库。
git clone https://github.com/devkimchi/meai-azure-ai-foundry-mcp-sample.git
创建 nuget.config 文件。{{FOUNDRY_LOCAL_NUGET_PACKAGE_PATH}} 是来自 上一节 的值。
# bash/zsh
cd meai-azure-ai-foundry-mcp-sample
cat ./nuget.sample.config \
| sed 's|/path/to/foundry-local/sdk/cs/src/bin/Debug|{{FOUNDRY_LOCAL_NUGGET_PACKAGE_PATH}}|g' \
> nuget.config
# PowerShell
cd me-azure-ai-foundry-mcp-sample
$(Get-Content -Path ./nuget.sample.config) `
-replace "/path/to/foundry-local/sdk/cs/src/bin/Debug", "{{FOUNDRY_LOCAL_NUGGET_PACKAGE_PATH}}" `
| Out-File -Path nuget.config -Force
注意:这一步仅在官方 NuGet 包发布之前需要执行。
Microsoft.Extensions.AI 示例应用确保你有 OpenAI、Azure OpenAI、GitHub 模型、Anthropic 和/或 Google Vertex AI 的 API 密钥。
将这些 API 密钥存储到用户秘密中:
# OpenAI
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:openai "Endpoint=https://api.openai.com/v1;Key={{OPENAI_API_KEY}}"
# Azure OpenAI
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:openai "Endpoint={{AZURE_OPENAI_ENDPOINT}};Key={{AZURE_OPENAI_API_KEY}}"
# GitHub 模型
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:openai "Endpoint=https://models.inference.ai.azure.com;Key={{GITHUB_PAT}}"
# Anthropic
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:anthropic "Endpoint=https://api.anthropic.com;Key={{ANTHROPIC_API_KEY}}"
# Google Vertex AI
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:google "Endpoint=https://generativelanguage.googleapis.com;Key={{GOOGLE_API_KEY}}"
确认你要使用的 LLM 在 src/Meai.ClientApp/appsettings.json 中
// 使用 OpenAI、Azure OpenAI 或 GitHub 模型
{
"MEAI": {
"ChatClient": "openai"
}
}
// 使用 Anthropic
{
"MEAI": {
"ChatClient": "anthropic"
}
}
// 使用 Google Vertex AI
{
"MEAI": {
"ChatClient": "google"
}
}
运行应用。
dotnet watch run --project ./src/Meai.ClientApp
确保你有 Azure AI Foundry 的 API 密钥。
将 API 密钥存储到用户秘密中:
# Azure AI Foundry
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:foundry "Endpoint={{AZURE_AI_FOUNDRY_ENDPOINT}};Key={{AZURE_AI_FOUNDRY_API_KEY}}"
确认你要使用的 LLM 在 src/Foundry.ClientApp/appsettings.json 中
{
"MEAI": {
"ChatClient": "foundry"
}
}
运行应用。
dotnet watch run --project ./src/Foundry.ClientApp
确保你已安装 Foundry Local CLI。
向 Foundry Local 添加模型。你可以通过运行 foundry model ls 来添加列表中的任何模型。
foundry model download qwen2.5-0.5b
确认你要使用的 LLM 在 src/Foundry.ClientApp/appsettings.json 中
{
"MEAI": {
"ChatClient": "local"
}
}
运行应用。
dotnet watch run --project ./src/Foundry.ClientApp
确保你有 OpenAI、Azure OpenAI 或 GitHub 模型的 API 密钥。
将这些 API 密钥存储到用户秘密中:
# OpenAI
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:openai "Endpoint=https://api.openai.com/v1;Key={{OPENAI_API_KEY}}"
# Azure OpenAI
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:openai "Endpoint={{AZURE_OPENAI_ENDPOINT}};Key={{AZURE_OPENAI_API_KEY}}"
# GitHub 模型
dotnet user-secrets --project ./src/Meai.ClientApp set ConnectionStrings:openai "Endpoint=https://models.inference.ai.azure.com;Key={{GITHUB_PAT}}"
运行 MCP 服务器应用。
dotnet run --project ./src/McpTodo.ServerApp
在另一个终端中运行 MCP 客户端应用。
dotnet watch run --project ./src/mcpTodo.ClientApp
在 Windows 上,如果你一直无法在你的机器上安装 Foundry Local CLI,尝试以下方法作为解决办法:
# 下载包及其依赖项
$releaseUri = "https://github.com/microsoft/Foundry-Local/releases/download/v0.3.9267/FoundryLocal-x64-0.3.9267.43123.msix"
Invoke-WebRequest -Method Get -Uri $releaseUri -OutFile ./FoundryLocal.msix
$crtUri = "https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx"
Invoke-WebRequest -Method Get -Uri $crtUri -OutFile ./VcLibs.appx
# 安装 Foundry Local 包
Add-AppxPackage ./FoundryLocal.msix -DependencyPath ./VcLibs.appx