Senparc.AI 系列教程(二):配置大模型,开始开发应用
为了方便大家学习和应用,在源码中我们已经提供了基于命令行的演示(相关方法同样适用于网站等任何其他系统),代码位置位于 /Samples/Senparc.AI.Samples.Consoles,打开 Senparc.AI.sln 解决方案也可以直接看到响应示例和所有源码: 运行后即可测试大模型对话、补全、图片生成、向量化、RAG、function-calling、MCP 等常见功能: 例如
为了方便大家学习和应用,在源码中我们已经提供了基于命令行的演示(相关方法同样适用于网站等任何其他系统),代码位置位于 /Samples/Senparc.AI.Samples.Consoles,打开 Senparc.AI.sln 解决方案也可以直接看到响应示例和所有源码:
运行后即可测试大模型对话、补全、图片生成、向量化、RAG、function-calling、MCP 等常见功能:
例如进行 Chat 对话(可以通过不同颜色区分 Stream 流式输出过程中的 Token):
可以看到 AI 回答问题还是有幻觉的问题(如 GitHub 地址有错误)。
开始创建应用
第一步:创建一个空项目
为了方便演示和更直观地查看原始输出内容,我们使用 Console 项目,您也可以举一反三使用 MVC、RazorPage、WPF、Blazor、WinForm 等其他类型项目。
使用 VS / VS Code 创建一个 Console 空项目,或使用命令行:
dotnet new console -n SenparcAiTest
第二步:设置 appsettings.json
创建或修改 appsettings.json 文件:
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, //CO2NET 设置 "SenparcSetting": { "IsDebug": true, }, //Senparc.AI 设置 "SenparcAiSetting": { "IsDebug": true, "AiPlatform": "DeepSeek", //注意修改为自己平台对应的枚举值 "VectorDB": { "Type": "InMemory", "ConnectionString": "" }, "DeepSeekKeys": { "Endpoint": "https://api.deepseek.com", "ApiKey": "<Your DeepSeek Key>", "ModelName": { "Chat": "deepseek-chat", "TextCompletion": "deepseek-chat" } } } }
上述配置以 DeepSeek 为例,AiPlatform 为默认选用大模型平台,DeepSeekKeys 节点中配置 DeepSeek 模型信息,其中 ModelName 中指定同一个平台下不同类型大模型所对应的模型名称。
目前还支持的其他类型还包括:
- NeuCharAI
- OpenAI
- AzureOpenAI
- HuggingFace
- FastAPI
- Ollama
- DeepSeek
当 AiPlatform 选中了任意一个模型平台,系统会自动从 “<AiPlatform>Keys”名称节点下读取相关配置信息。
第三步:安装 Nuget 依赖包
为了能够读取 appsettings.json,我们需要引用一个官方包:Microsoft.Extensions.Configuration.Json,以及 Senparc.AI 的核心模块包:Senparc.AI.Kernel:
dotnet add package Microsoft.Extensions.Configuration.Json dotnet add package Senparc.AI.Kernel
第四步:配置 Program.cs
清除 Program.cs 原有内容,输入启动准备代码:
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Senparc.AI.Kernel; using Senparc.CO2NET; using Senparc.CO2NET.RegisterServices; var configBuilder = new ConfigurationBuilder(); configBuilder.AddJsonFile("appsettings.json", false, false); Console.WriteLine("完成 appsettings.json 添加"); var config = configBuilder.Build(); Console.WriteLine("完成 ServiceCollection 和 ConfigurationBuilder 初始化"); var services = new ServiceCollection(); services.AddSenparcGlobalServices(config) .AddSenparcAI(config); var serviceProvider = services.BuildServiceProvider(); IRegisterService register = RegisterService.Start() .UseSenparcGlobal() .UseSenparcAI();
上述代码是使用 Senparc.AI 的通用启动代码,任何系统都只需要完成一次,重点是 AddSenparcAI() 和 UseSenparcAI() 两个方法,将自动完成所有 Senparc.AI 的相关准备工作(包括大模型信息映射)。
第五步:编写 AI 代码
以对话(Chat)为例,最精简的单轮对话(或直接执行任务),可以在 Program.cs 中继续输入以下代码:
1 // Chat 对话 2 3 //定义 SemanticAiHandler 实例 4 SemanticAiHandler semanticAiHandler = new SemanticAiHandler(null); 5 6 //配置模型参数 7 var parameter = new PromptConfigParameter() 8 { 9 MaxTokens = 2000, 10 Temperature = 0.7, 11 TopP = 0.5, 12 }; 13 14 //获取 IWantToRun 实例 15 var systemMessage = "你是一位专业的AI助手,擅长回答各种问题。请确保你的回答准确且有帮助。"; 16 var iWantToRun = semanticAiHandler.ChatConfig(parameter, 17 userId: "Jeffrey", 18 maxHistoryStore: 10, 19 chatSystemMessage: systemMessage); 20 21 Console.WriteLine(); 22 Console.WriteLine("==== 对话开始 ===="); 23 while (true) 24 { 25 //开始对话 26 Console.WriteLine("人类:"); 27 var inputPrompt = Console.ReadLine() ?? "你好"; 28 29 var result = await semanticAiHandler.ChatAsync(iWantToRun, inputPrompt); 30 31 Console.WriteLine("AI 回答:\n" + result.OutputString); 32 Console.WriteLine(); 33 }
可以看到,核心代码是 16 行(定义 IWantToRun 对象)以及 29 行请求模型结果,非常简洁。
运行效果:
延伸功能
更多延伸功能,可以参考源码中的示例,注释已经比较完整,相关示例包含:
- 如 Stream(流式)输出
- Completion(补全)
- RAG / 知识库
- 向量数据库操作
- 图片生成(Text to Image)
- Planner
- Plguin(function-calling 和 MCP)
- 等等
进阶小贴士
- 可以通过 Senparc.AI.Config.SenparcAiSetting 获取 appsettings.json 中的 SenparcAiSetting 节点的信息。
- 可以使用 Senparc.AI.Config.SenparcAiSetting.AiPlatform 可以读取或者设置当前系统默认的模型平台。
- 如果你想在系统中同时配置和使用多个平台(甚至同一个平台的不同账号或模型配置),可以在 appsettings.json 下 SenparcAiSetting 节点下添加一个 Item 节点,如:
1 "Items": { 2 "AzureDallE3": { 3 "AiPlatform": "AzureOpenAI", 4 "AzureOpenAIKeys": { 5 "ApiKey": "<My AzureOpenAI Keys>", 6 "AzureEndpoint": "<My AzureOpenAI DallE3 Endpoint>", 7 "AzureOpenAIApiVersion": "2022-12-01", 8 "ModelName": { 9 "TextToImage": "dall-e-3" 10 } 11 } 12 },23 "OtherModels": { 24 "AiPlatform": "<AiPlatform>" 25 //任意数量的 *Keys 配置 26 } 27 }
在代码中索引 Key 的方式找到对应配置,如:
var senparcAiSetting = ((SenparcAiSetting)Senparc.AI.Config.SenparcAiSetting)["AzureDallE3"];//获取 AzureDallE3 模型配置

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)