🧪

🧪

APIM ❤️ AI - 此仓库包含对 Azure API Management 的 AI 功能的实验,集成了 Azure OpenAI、AI Foundry 等等 🚀

Azure-Samples

研究与数据
访问服务器

README

🧪 AI 网关 实验室,使用 Azure API 管理

开源爱好者

最新动态 ✨

➕ 使用 客户端授权流程 进行 模型上下文协议 (MCP) ⚙️ 实验 ➕ FinOps 框架 实验室,有效管理 AI 预算 💰 ➕ 使用 模型上下文协议 (MCP) 进行 Agentic ✨ 实验。 ➕ 使用 OpenAI Agents SDK 进行 Agentic ✨ 实验。 ➕ 使用来自 Azure AI Foundry 的 AI Agent Service 进行 Agentic ✨ 实验。 ➕ 使用来自 Azure AI Foundry 的 Deepseek R1 模型进行 AI Foundry Deepseek 实验室。 ➕ 使用迭代策略探索来微调最佳生产配置的 从零到生产 实验室。 ➕ 后端池负载均衡的 Terraform 版本 实验室。 ➕ AI Foundry SDK 实验室。 ➕ 内容过滤 和 提示屏蔽 实验室。 ➕ 使用基于 OpenAI 模型的路由进行 模型路由 实验室。 ➕ Prompt flow 实验室,尝试使用 Azure API 管理的 Azure AI Studio Prompt Flow。 ➕ 将 priority 和 weight 参数添加到 后端池负载均衡 实验室。 ➕ 流式传输 工具,用于测试 Azure API 管理的 OpenAI 流式传输。 ➕ 跟踪 工具,用于使用 Azure API 管理跟踪功能 调试和排除 OpenAI API 故障。 ➕ 将图像处理添加到 GPT-4o 推理 实验室。 ➕ 使用 Azure Functions 上的示例 API 进行 函数调用 实验室。

目录

  1. 🧠 GenAI 网关
  2. 🧪 使用 AI Agents 的实验室
  3. 🧪 使用推理 API 的实验室
  4. 🧪 基于 Azure OpenAI 的实验室
  5. 🚀 入门
  6. ⛵ 推广到生产环境
  7. 🔨 支持工具
  8. 🏛️ 良好架构框架
  9. 🎒 展示和讲述
  10. 🥇 其他资源

人工智能的快速发展要求组织采用实验驱动的方法,以保持在行业的最前沿。随着人工智能稳步成为各个行业的变革者,保持快速的创新轨迹对于旨在充分利用其潜力的企业至关重要。

AI 服务 主要通过 API 访问,这突显了对强大而高效的 API 管理策略的根本需求。该策略有助于维持对 AI 服务 消费的控制和治理。

随着 AI 服务 的不断扩展及其与 API 的无缝集成,对全面的 AI 网关 模式存在相当大的需求,该模式扩展了 API 管理的核心原则。旨在加速高级用例的实验,并为这个快速发展领域的进一步创新铺平道路。AI 网关 的良好架构原则为自信地将 智能应用 部署到生产环境提供了一个框架。

🧠 GenAI 网关

AI-Gateway flow

此存储库通过一系列实验性实验室探索 AI 网关 模式。Azure API 管理 的 GenAI 网关功能 在这些实验室中发挥着关键作用,处理 AI 服务 API,具有安全性、可靠性、性能、整体运营效率和成本控制。主要重点是 Azure OpenAI,它为大型语言模型 (LLM) 设置了标准参考。但是,相同的原则和设计模式可能适用于任何 LLM。

认识到 Python 的日益普及,尤其是在 AI 领域,以及 Jupyter 笔记本的强大实验功能,以下实验室围绕 Jupyter 笔记本构建,包含带有 Python 脚本、Bicep 文件和 Azure API 管理策略 的分步说明:

🧪 使用 AI Agents 的实验室

<!-- MCP Client Authorization -->

🧪 MCP 客户端授权

用于使用 客户端授权流程 实验 模型上下文协议 的 Playground。在此流程中,Azure API 管理既充当连接到 Microsoft Entra ID 授权服务器的 OAuth 客户端,又充当 MCP 客户端(本实验室中的 MCP 检查器)的 OAuth 授权服务器。

<img src="images/mcp-client-authorization-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Model Context Protocol (MCP) -->

🧪 模型上下文协议 (MCP)

用于使用 Azure API 管理实验 模型上下文协议 以启用工具到 LLM 的即插即用。利用 凭据管理器 管理到后端工具的 OAuth 2.0 令牌,并利用 客户端令牌验证 确保端到端身份验证和授权。

<img src="images/model-context-protocol-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- OpenAI Agents -->

🧪 OpenAI Agents

用于尝试使用 Azure OpenAI 模型和由 Azure API 管理控制的基于 API 的工具的 OpenAI Agents 的 Playground。

<img src="images/openai-agents-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- AI Agent Service -->

🧪 AI Agent Service

使用此 Playground 探索 Azure AI Agent Service,利用 Azure API 管理来控制多个服务,包括 Azure OpenAI 模型、Logic Apps 工作流和基于 OpenAPI 的 API。

<img src="images/ai-agent-service-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Function calling -->

🧪 函数调用

用于尝试 OpenAI 函数调用 功能的 Playground,该功能具有也由 Azure API 管理管理的 Azure Functions API。

<img src="images/function-calling-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

🧪 使用推理 API 的实验室

<!-- AI Foundry Deepseek -->

🧪 AI Foundry Deepseek

用于通过来自 Azure AI Foundry 的 AI 模型推理尝试 Deepseek R1 模型 的 Playground。此实验室使用 Azure AI 模型推理 API 和两个 APIM LLM 策略:llm-token-limit 和 llm-emit-token-metric。

<img src="images/ai-foundry-deepseek-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- SLM self-hosting -->

🧪 SLM 自托管 (phy-3)

用于通过具有 OpenAI API 兼容性的 Azure API 管理自托管网关 尝试自托管 phy-3 小型语言模型 (SLM) 的 Playground。

<img src="images/slm-self-hosting-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

🧪 基于 Azure OpenAI 的实验室

<!--FinOps framework -->

🧪 FinOps 框架

此 Playground 利用 FinOps 框架 和 Azure API 管理来控制 AI 成本。它对每个 产品 使用 令牌限制 策略,并将 Azure Monitor 警报 与 Logic Apps 集成,以自动禁用超出成本配额的 APIM 订阅。

<img src="images/finops-framework-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Backend pool load balancing -->

🧪 后端池负载均衡 - 提供 Bicep 和 Terraform 版本

用于尝试内置负载均衡 Azure API 管理的后端池功能 到 Azure OpenAI 终结点或模拟服务器列表的 Playground。

<img src="images/backend-pool-load-balancing-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Token rate limiting -->

🧪 令牌速率限制

用于尝试 令牌速率限制策略 到一个或多个 Azure OpenAI 终结点的 Playground。当超过令牌使用量时,调用方会收到 429。

<img src="images/token-rate-limiting-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Token metrics emitting -->

🧪 令牌指标发出

用于尝试 发出令牌指标策略 的 Playground。该策略通过 Azure OpenAI 服务 API 将有关大型语言模型令牌消耗的指标发送到 Application Insights。

<img src="images/token-metrics-emitting-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Semantic caching -->

🧪 语义缓存

用于尝试 语义缓存策略 的 Playground。使用提示与先前请求的向量邻近度以及指定的相似度分数阈值。

<img src="images/semantic-caching-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Access controlling -->

🧪 访问控制

用于尝试 OAuth 2.0 授权功能 的 Playground,该功能使用标识提供者来启用对特定用户或客户端的 OpenAPI API 的更精细的访问。

<img src="images/access-controlling-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- zero-to-production -->

🧪 从零到生产

用于以迭代方式创建多个策略组合的 Playground。我们从负载均衡开始,然后逐步添加令牌发出、速率限制,最终添加语义缓存。这些策略集中的每一个都来自此存储库中的其他实验室。

<img src="images/zero-to-production-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- GPT-4o inferencing -->

🧪 GPT-4o 推理

用于尝试新的 GPT-4o 模型的 Playground。GPT-4o(“o”代表“全方位”)旨在处理文本、音频和视频输入的组合,并且可以生成文本、音频和图像格式的输出。

<img src="images/GPT-4o-inferencing-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Model Routing -->

🧪 模型路由

用于尝试基于 Azure OpenAI 模型和版本路由到后端的 Playground。

<img src="images/model-routing-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Vector searching -->

🧪 向量搜索

用于尝试使用 Azure AI 搜索、Azure OpenAI 嵌入和 Azure OpenAI 完成的 检索增强生成 (RAG) 模式 的 Playground。

<img src="images/vector-searching-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Built-in logging -->

🧪 内置日志记录

用于尝试 Azure API 管理的内置日志记录功能 的 Playground。将请求记录到 App Insights 中以跟踪详细信息和令牌使用情况。

<img src="images/built-in-logging-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Message storing -->

🧪 消息存储

用于测试通过 记录到事件中心 策略将消息详细信息存储到 Cosmos DB 中的 Playground。使用该策略,我们可以控制哪些数据将存储在数据库中(提示、完成、模型、区域、令牌等)。

<img src="images/message-storing-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Prompt flow -->

🧪 Prompt flow

用于尝试使用 Azure API 管理的 Azure AI Studio Prompt Flow 的 Playground。

<img src="images/prompt-flow-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Content Filtering -->

🧪 内容过滤

用于尝试将 Azure API 管理与 Azure AI Content Safety 集成以过滤潜在的冒犯性、有风险或不良内容的 Playground。

<img src="images/content-filtering-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

<!-- Prompt Shielding -->

🧪 提示屏蔽

用于尝试 Azure AI Content Safety 服务的提示屏蔽的 Playground,该服务分析 LLM 输入并检测用户提示攻击和文档攻击,这两种是常见的对抗性输入类型。

<img src="images/content-filtering-small.gif" alt="flow" style="width: 437px; display: inline-block;" data-target="animated-image.originalImage">

🦾 Bicep ➕ ⚙️ 策略 ➕ 🧾 笔记本

实验室积压工作

这是要开发的潜在未来实验室的列表。

  • 实时 API
  • 具有 Agents 的 Semantic Kernel
  • Logic Apps RAG
  • PII 处理
  • Gemini

[!TIP] 请使用 反馈讨论,以便我们可以根据您的经验、建议、想法或实验室请求不断改进。

🚀 入门

先决条件

快速入门

  1. 克隆此存储库并使用先决条件配置您的本地计算机。或者,只需创建一个 GitHub Codespace 并在浏览器或 VS Code 中运行它。
  2. 浏览可用的实验室并选择最适合您需求的实验室。对于初学者,我们建议 令牌速率限制。
  3. 打开笔记本并运行提供的步骤。
  4. 根据您的要求定制实验。如果您希望为我们的集体工作做出贡献,我们将感谢您 提交拉取请求。

[!NOTE] 🪲 如果您发现应该修复或增强的内容,请随时打开一个新的 问题。

⛵ 推广到生产环境

我们建议使用 AI Hub 网关登陆区域 中的指南和最佳实践来实施中央 AI API 网关,以使组织中的各个业务部门能够利用 Azure AI 服务。

🔨 支持工具

  • AI-Gateway 模拟服务器 旨在模拟 OpenAI API 的行为和响应,从而创建一个高效的模拟环境,适用于在与 Azure API 管理集成和其他用例中进行测试和开发。app.py 可以自定义,以根据特定用例定制模拟服务器。
  • 跟踪 - 调用启用跟踪的 OpenAI API 并返回跟踪信息。
  • 流式传输 - 调用启用流式传输的 OpenAI API 并以块的形式返回响应。

🏛️ 良好架构框架

Azure 良好架构框架 是一个可以提高工作负载质量的设计框架。下表将实验室与良好架构框架支柱映射,以通过架构实验帮助您取得成功。

实验室 安全性 可靠性 性能 运营 成本
请求转发 ⭐
后端断路器 ⭐ ⭐
后端池负载均衡 ⭐ ⭐ ⭐
高级负载均衡 ⭐ ⭐ ⭐
响应流式传输 ⭐ ⭐
向量搜索 [⭐](#%EF%B8%8F

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python