Aspire GitHub 模型集成 (预览版)

包含:托管集成已包含 - Client 集成已包含Client 集成

GitHub 模型 提供对各种 AI 模型的访问权限,包括 OpenAI's GPT 模型、DeepSeek、Microsoft的 Phi 模型和其他领先的 AI 模型,这些模型均可通过 GitHub基础结构进行访问。 通过AspireGitHub模型集成,你可以从GitHub应用程序中连接到.NET模型,以便进行原型制作和生产方案。

托管集成

Aspire GitHub 托管集成模型的模型将GitHub资源建模为 GitHubModelResource。 为了访问这些类型和 API 并在 AppHost 项目中表达它们,请安装 📦Aspire.Hosting.GitHub.Models NuGet 包。

dotnet add package Aspire.Hosting.GitHub.Models

有关详细信息,请参阅 dotnet 添加包管理 .NET 应用程序中的包依赖性

添加 GitHub 模型资源

若要将 a GitHubModelResource 添加到 AppHost 项目,请调用 AddGitHubModel 方法:

var builder = DistributedApplication.CreateBuilder(args);

var chat = builder.AddGitHubModel("chat", "openai/gpt-4o-mini");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(chat);

// After adding all resources, run the app...

前面的代码使用 GitHub 模型添加了一个名为 chatopenai/gpt-4o-mini 模型资源。 WithReference 方法将连接信息传递给 ExampleProject 项目。

指定组织

对于组织特定的请求,可以指定组织参数:

var builder = DistributedApplication.CreateBuilder(args);

var organization = builder.AddParameter("github-org");
var chat = builder.AddGitHubModel("chat", "openai/gpt-4o-mini", organization);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(chat);

// After adding all resources, run the app...

指定组织时,令牌必须归于该组织。GitHub

配置 API 密钥身份验证

GitHub 模型集成支持多种身份验证配置方法:

默认 API 密钥参数

默认情况下,集成会创建一个名为{resource_name}-gh-apikey的参数,该参数会自动回退到GITHUB_TOKEN环境变量。

var chat = builder.AddGitHubModel("chat", "openai/gpt-4o-mini");

然后在用户机密中:

{
  "Parameters": {
    "chat-gh-apikey": "YOUR_GITHUB_TOKEN_HERE"
  }
}

自定义 API 密钥参数

还可以为 API 密钥指定自定义参数:

var apiKey = builder.AddParameter("my-api-key", secret: true);
var chat = builder.AddGitHubModel("chat", "openai/gpt-4o-mini")
                  .WithApiKey(apiKey);

然后在用户机密中:

{
  "Parameters": {
    "my-api-key": "YOUR_GITHUB_TOKEN_HERE"
  }
}

健康检查

可以添加运行状况检查来验证 GitHub 模型终结点可访问性和 API 密钥有效性:

var chat = builder.AddGitHubModel("chat", "openai/gpt-4o-mini")
                  .WithHealthCheck();

Important

由于运行状况检查包含在模型 API 的 GitHub 速率限制中,因此请谨慎使用此运行状况检查,例如调试连接问题时。 运行状况检查仅在每个应用程序实例上运行一次,以最大程度地减少 API 使用情况。

可用的模型

GitHub 模型支持各种 AI 模型。 一些常用选项包括:

  • openai/gpt-4o-mini
  • openai/gpt-4o
  • deepseek/DeepSeek-V3-0324
  • microsoft/Phi-4-mini-instruct

查看GitHub模型文档,以获取最新的可用模型列表。

Client 集成

若要开始使用 AspireGitHub Models 客户端集成,可以使用 Azure AI 推理客户端或 OpenAI 客户端,具体取决于需求和模型兼容性。

使用 Azure AI 推理客户端

在客户端使用项目中安装 📦Aspire.Azure.AI.Inference NuGet 包:

dotnet add package Aspire.Azure.AI.Inference

添加 ChatCompletionsClient

在客户端使用服务的项目中的 Program.cs 文件里,使用 AddAzureChatCompletionsClient 方法注册一个 ChatCompletionsClient 来实现依赖注入:

builder.AddAzureChatCompletionsClient("chat");

然后,可以使用依赖项注入检索 ChatCompletionsClient 实例:

public class ExampleService(ChatCompletionsClient client)
{
    public async Task<string> GetResponseAsync(string prompt)
    {
        var response = await client.GetChatCompletionsAsync(
            "openai/gpt-4o-mini",
            new[]
            {
                new ChatMessage(ChatRole.User, prompt)
            });
        
        return response.Value.Choices[0].Message.Content;
    }
}

使用已注册的 IChatClient 添加 ChatCompletionsClient

如果您使用 Microsoft.Extensions.AI 抽象库,您可以注册 IChatClient

builder.AddAzureChatCompletionsClient("chat")
       .AddChatClient();

然后在服务中使用它:

public class StoryService(IChatClient chatClient)
{
    public async Task<string> GenerateStoryAsync(string prompt)
    {
        var response = await chatClient.GetResponseAsync(prompt);

        return response.Text;
    }
}

使用 OpenAI 客户端

对于与 OpenAI API 兼容的模型(例如 openai/gpt-4o-mini),可以使用 OpenAI 客户端。 安装 📦Aspire.OpenAI NuGet 包:

dotnet add package Aspire.OpenAI

添加 OpenAI 客户端

builder.AddOpenAIClient("chat");

然后可以使用OpenAI客户端:

public class ChatService(OpenAIClient client)
{
    public async Task<string> GetChatResponseAsync(string prompt)
    {
        var chatClient = client.GetChatClient("openai/gpt-4o-mini");

        var response = await chatClient.CompleteChatAsync(
            new[]
            {
                new UserChatMessage(prompt)
            });
        
        return response.Value.Content[0].Text;
    }
}

使用已注册的 IChatClient 添加 OpenAI 客户端

builder.AddOpenAIClient("chat")
       .AddChatClient();

Configuration

Models GitHub 集成支持通过用户机密、环境变量或应用设置进行配置。 集成会自动使用 GITHUB_TOKEN 环境变量(如果可用),也可以指定自定义 API 密钥参数。

Authentication

集成GitHub模型需要一个具有GitHub权限的models: read个人访问令牌。 可以通过多种方式提供令牌:

Codespaces 和 GitHub Actions 中的环境变量

在 Codespaces 或 GitHub Actions 中GitHub运行应用时,GITHUB_TOKEN环境变量会自动可用,无需其他配置即可使用。 此令牌具有访问 GitHub 存储库上下文的模型的必要权限。

// No additional configuration needed in Codespaces/GitHub Actions
var chat = builder.AddGitHubModel("chat", "openai/gpt-4o-mini");
用于本地开发的个人访问令牌

对于本地开发,需要创建具有作用域models: read,并在用户机密中对其进行配置:

{
  "Parameters": {
    "chat-gh-apikey": "github_pat_YOUR_TOKEN_HERE"
  }
}

连接字符串格式

连接字符串遵循以下格式:

Endpoint=https://models.github.ai/inference;Key={api_key};Model={model_name};DeploymentId={model_name}

对于组织特定的请求:

Endpoint=https://models.github.ai/orgs/{organization}/inference;Key={api_key};Model={model_name};DeploymentId={model_name}

速率限制和成本

Important

每个模型都有因模型和使用层而异的速率限制。 超出免费层限制后,某些模型会产生费用。 请查看模型文档,GitHub了解当前的费率限制和定价信息。

Tip

请谨慎使用健康检查,以避免超出速率限制。 集成缓存运行状况检查结果以最大程度地减少 API 调用。

示例应用程序

dotnet/aspire存储库包含演示模型集成的示例应用程序GitHub。 可以在存储库中找到AspireGitHub示例。

可观测性和遥测

Aspire 集成会自动设置日志记录、跟踪和指标配置,这些配置有时称为 可观测性支柱。 有关集成可观测性和遥测的详细信息,请参阅 Aspire 集成概述。 根据支持服务,某些集成可能仅支持其中一些功能。 例如,某些集成支持日志记录和跟踪,但不支持指标。 还可以使用 “配置” 部分中介绍的技术禁用遥测功能。

Logging

GitHub模型集成使用标准 HTTP 客户端日志记录类别:

  • System.Net.Http.HttpClient
  • Microsoft.Extensions.Http

Tracing

使用 GitHubAI 推理或Azure客户端时,对OpenAI模型 API 的 HTTP 请求会被自动跟踪。

另请参阅