包含: -
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 模型添加了一个名为 chat 的 openai/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-miniopenai/gpt-4odeepseek/DeepSeek-V3-0324microsoft/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.HttpClientMicrosoft.Extensions.Http
Tracing
使用 GitHubAI 推理或Azure客户端时,对OpenAI模型 API 的 HTTP 请求会被自动跟踪。