aigc
以下是基于 Microsoft.Extensions.AI 的保姆级教程,结合官方文档及实践案例整理而成:
一、环境准备与安装
创建项目
新建一个 .NET 控制台应用(建议使用 .NET 8 或更高版本):
dotnet new console -n AIDemo
cd AIDemo
安装依赖包
安装核心库及 OpenAI 兼容扩展(以国内兼容 OpenAI 的模型为例):
dotnet add package Microsoft.Extensions.AI.Abstractions
dotnet add package Microsoft.Extensions.AI.OpenAI
二、基础配置与 API 调用
配置模型参数
在 appsettings.json 中添加模型配置(以 DeepSeek 为例):
{
"ModelSettings": {
"ApiKey": "your-api-key",
"ModelId": "deepseek-r1-7b",
"Endpoint": "https://api.siliconflow.cn/v1"
}
}
初始化服务
在 Program.cs 中注入 AI 服务:
using Microsoft.Extensions.AI;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
var config = builder.Build();
var services = new ServiceCollection();
services.AddAiClient(config.GetSection("ModelSettings"));
var serviceProvider = services.BuildServiceProvider();
var chatClient = serviceProvider.GetRequiredService<IChatClient>();
实现简单对话
调用模型生成回答:
var response = await chatClient.CompleteAsync("用一句话解释量子计算");
Console.WriteLine(response.Message); // 输出模型响应
三、函数调用(Function Calling)
定义插件类
创建一个处理文件的插件,例如 FileProcessorPlugin:
public class FileProcessorPlugin
{
[Description("读取PDF内容并返回文本")]
public string ReadPdf(string filePath)
{
// 实现PDF解析逻辑
return "PDF内容文本...";
}
[Description("保存Markdown笔记到指定路径")]
public void SaveMarkdown(string path, string content)
{
File.WriteAllText(path, content);
}
}
注入插件并调用
在服务配置中启用函数调用:
services.AddAiClient(config.GetSection("ModelSettings"))
.UseFunctionInvocation()
.AddPlugin<FileProcessorPlugin>();
触发函数
调用通过自然语言指令触发:
var result = await chatClient.CompleteAsync(
"请读取 /data/report.pdf 并保存摘要到 /notes/summary.md");
// 模型会自动调用插件中的函数
四、多模型混合配置
若需同时使用多个模型(如对话用 Qwen,数据处理用 DeepSeek):
Csharp复制services.AddAiClient("QwenClient", config.GetSection("QwenSettings"))
.AddAiClient("DeepSeekClient", config.GetSection("DeepSeekSettings"));
// 按需获取不同客户端
var qwenClient = serviceProvider.GetRequiredService<IChatClient>("QwenClient");
var deepseekClient = serviceProvider.GetRequiredService<IChatClient>("DeepSeekClient");
五、调试与优化
- 日志与监控
启用内置日志记录:
services.AddLogging(logging => logging.AddConsole());
- 性能优化
通过ChatOptions
控制响应参数:
var options = new ChatOptions { Temperature = 0.7, MaxTokens = 500 };
var response = await chatClient.CompleteAsync("提问内容", options);
六、学习资源推荐
官方文档
实践案例
- 参考开源项目 eShopSupportShopSupport ,学习企业级 AI 客服实现 7。
社区支持
- 加入 .NET AI 开发者论坛 获取最新动态 39。
注意事项
- 当前 Microsoft.Extensions.AI 仍处于预览阶段,API 可能有变动,建议定期检查更新 6。
- 国内模型服务需确保 API 端点兼容 OpenAI 格式(如阿里云 DashScope、DeepSeek 等)29。
- 本地部署模型可结合 Ollama 工具(教程参考 8),但需较高硬件配置。