aigc
以下是基于 Microsoft.Extensions.AI 框架接入 Ollama 本地大语言模型的保姆级教程,结合官方文档及实践案例整理而成:
一、环境准备
安装 Ollama
ollama --version
- 修改模型存储路径(避免占用C盘):
# Windows系统设置环境变量
setx OLLAMA_MODELS "D:\ollama_models"
加载模型
- 下载常用模型(如 Llama3、DeepSeek):
ollama pull llama3:8b # 加载 8B 参数模型
ollama pull deepseek-r1 # 国内模型需确认名称
- 查看已安装模型:
ollama list
二、项目配置
创建 .NET 项目
dotnet new console -n OllamaDemo
cd OllamaDemo
安装 NuGet 包
dotnet add package Microsoft.Extensions.AI
dotnet add package Microsoft.Extensions.AI.Ollama # 官方扩展包
配置文件
在 appsettings.json 中配置 Ollama 参数:
{
"OllamaSettings": {
"Endpoint": "http://localhost:11434", // Ollama默认端口
"ModelId": "llama3:8b" // 与本地已加载模型名称一致
}
}
三、服务注入与调用
服务注册
修改 Program.cs :
using Microsoft.Extensions.AI;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var services = new ServiceCollection();
services.AddLogging(logging => logging.AddConsole());
// 关键:注册Ollama服务
services.AddOllamaClient(config.GetSection("OllamaSettings"));
var provider = services.BuildServiceProvider();
var chatClient = provider.GetRequiredService<IChatClient>();
基础对话实现
var response = await chatClient.CompleteAsync("用C#实现快速排序");
Console.WriteLine(response.Message);
四、高级功能
多模型混合调用
同时使用 Ollama 本地模型和云端服务:
services.AddOllamaClient("LocalModel", config.GetSection("OllamaSettings"))
.AddOpenAIClient("CloudModel", config.GetSection("OpenAISettings"));
// 按需调用
var localResponse = await provider.GetRequiredService<IChatClient>("LocalModel").CompleteAsync(...);
var cloudResponse = await provider.GetRequiredService<IChatClient>("CloudModel").CompleteAsync(...);
性能调优
通过 ChatOptions 控制响应质量:
var options = new ChatOptions {
Temperature = 0.3, // 降低随机性
MaxTokens = 1000, // 最大输出长度
Seed = 42 // 固定随机种子
};
var response = await chatClient.CompleteAsync("问题内容", options);
五、调试与监控
日志查看
启动时添加 AddConsole() 日志组件,可观察请求详情:
info: Microsoft.Extensions.AI.Ollama[0]
Request: POST http://localhost:11434/api/generate
Payload: {"model":"llama3:8b","prompt":"..."}
常见问题排查
- 端口冲突:确认 Ollama 服务占用 11434 端口未被占用
- 模型加载失败:通过 ollama list 确认模型名称拼写正确
- 响应速度慢:尝试较小参数模型(如 7B 版本)
扩展场景
1、使用 Ollama WebUI 构建可视化界面,通过 1Panel 快速部署 8
# 使用1Panel模板安装
1pctl app install ollama-webui
2、本地知识库集成
参考开源项目 PaperAssistant ,实现 PDF 解析与问答 35
学习资源
- 官方文档:Microsoft Learn AI 扩展教程 3
- 开源示例:eShopSupportShopSupport 智能客服实现案例 3
- 社区讨论:.NET AI 开发者论坛获取最新动态 6
注意事项
- Ollama 对硬件有要求,建议至少 16GB 内存 + 支持 AVX2 指令集的 CPU 9
- 国内模型需确认是否支持 Ollama 格式(如 DeepSeek 需特殊配置)11
- Microsoft.Extensions.AI 仍处预览阶段,需关注 API 变更