雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

微软官方Microsoft.Extensions.AI库使用示例

2024-12-10 21

Microsoft.Extensions.AI 库介绍

Microsoft.Extensions.AI 是一个扩展库,用于在 .NET 应用程序中轻松集成人工智能(AI)服务,例如 OpenAI、Azure OpenAI 和其他支持文本生成或语言模型的 API。通过与 Microsoft.Extensions.DependencyInjection 框架的无缝结合,开发者可以通过配置和依赖注入的方式使用 AI 服务,大幅简化开发流程并提升代码的可维护性。

Microsoft.Extensions.AI库的特点与功能

与依赖注入框架集成:利用 ASP.NET Core 或其他基于 Microsoft.Extensions 的框架,提供模块化的 AI 服务注入支持。 灵活的配置方式:支持通过配置文件或代码直接指定 AI 服务提供商、API 密钥等信息。 多服务支持:可以同时配置多个 AI 服务(如 OpenAI 和 Azure OpenAI)。 安全性与易用性:通过内置的 HttpClient 工厂,安全管理 API 调用和依赖。

Microsoft.Extensions.AI库 用法示例

1. 安装 NuGet 包

dotnet add package Microsoft.Extensions.AI

2. 配置 AI 服务

在 Program.cs 中,通过依赖注入添加 AI 服务:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.AI.OpenAI;

// 在 Program.cs 中
var builder = WebApplication.CreateBuilder(args);

// 添加 OpenAI 服务
builder.Services.AddOpenAIClient(options =>
{
    options.ApiKey = "your-openai-api-key"; // 替换为你的 OpenAI API 密钥
    options.BaseAddress = new Uri("https://api.openai.com/v1/"); // OpenAI API 地址
});

var app = builder.Build();

app.MapGet("/", async (IOpenAIClient openAIClient) =>
{
    var prompt = "Tell me a joke about programming.";
    var response = await openAIClient.GenerateTextAsync(prompt);
    return response.Text;
});

app.Run();

3. 创建 AI 服务接口并调用

你可以定义接口以封装 AI 服务的调用逻辑:

定义服务接口

public interface IAIService
{
    Task<string> GetCompletionAsync(string prompt);
}

实现接口

using Microsoft.Extensions.AI.OpenAI;

public class AIService : IAIService
{
    private readonly IOpenAIClient _openAIClient;

    public AIService(IOpenAIClient openAIClient)
    {
        _openAIClient = openAIClient;
    }

    public async Task<string> GetCompletionAsync(string prompt)
    {
        var response = await _openAIClient.GenerateTextAsync(prompt);
        return response.Text;
    }
}

注册服务并使用

builder.Services.AddScoped<IAIService, AIService>();

app.MapPost("/generate", async (IAIService aiService, [FromBody] string prompt) =>
{
    var result = await aiService.GetCompletionAsync(prompt);
    return Results.Ok(result);
});

示例 API 调用

请求示例:

curl -X POST http://localhost:5000/generate -H "Content-Type: application/json" -d "\"What are the key benefits of dependency injection?\""

响应示例:

{
    "response": "Dependency injection helps in decoupling dependencies, promoting testability, and making the application more modular and maintainable."
}

总结

Microsoft.Extensions.AI 通过简洁的配置和高度模块化的架构,使得在 .NET 中集成 AI 服务变得高效和直观。无论是构建聊天机器人、自动化工具还是其他基于生成式 AI 的解决方案,该库都提供了出色的支持。

更新于:8天前
赞一波!2

文章评论

评论问答