当前位置: 首页 > news >正文

(四) Dotnet为AI控制台添加日志输出

image.png
通过上文的控制台输出,可以看到并没有输出日志,原则上调试开发时需要日志输出,存在ChatClientBuilder 类扩展方法UseLogging()

public static ChatClientBuilder UseLogging(this ChatClientBuilder builder,ILoggerFactory? loggerFactory = null,Action<LoggingChatClient>? configure = null)

实际代码修改部分如下:

    internal class Program{async static Task Main(string[] args){// 省略不变内容// 注册IChatClient实现类型builder.Services.AddChatClient(services =>ChatClientBuilderChatClientExtensions.AsBuilder(chatclient)//-------------------------使用日志------------------------------.UseLogging() // 引入日志//-------------------------使用日志------------------------------.Build(services) // 传入注册);// 构建Host实例var host = builder.Build();// 获取ichatclient实现实例IChatClient client = host.Services.GetRequiredService<IChatClient>();// 省略不变内容}}

项目创建配置文件appsettings.json 并设置属性为较新时复制或始终复制。

{"Logging": {"LogLevel": {"Default": "Error","Microsoft": "Warning"},"Debug": {"LogLevel": {"Default": "Information","Microsoft.Hosting": "Trace"}},"Console": {"LogLevel": {"Default": "Debug","Microsoft.Hosting": "Trace"}},"EventSource": {"LogLevel": {"Default": "Warning"}}}
}

项目创建配置文件appsettings.Development.json 并设置属性为较新时复制或始终复制。

{"Logging": {"LogLevel": {"Default": "Debug","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"},"Debug": {"LogLevel": {"Default": "Debug","Microsoft.Hosting": "Trace"}}}
}

通过项目属性,设置项目环境变量DOTNET_ENVIRONMENT对应值为Development
Pasted image 20251006222122.png
运行项目执行输出如下:
Pasted image 20251006222311.png
完整代码如下:

    internal class Program{async static Task Main(string[] args){string apikey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");// 通过环境变量获取apikeystring model = "deepseek-chat"; // 非思考string modelthink = "deepseek-reasoner"; // 思考 string endpoint = "https://api.deepseek.com/v1"; // deepseek 中 提供兼容openai的访问api// 构建默认主机构建器实例var builder = Host.CreateApplicationBuilder();// 构建ichatclient实例IChatClient chatclient = new OpenAI.Chat.ChatClient(model, new ApiKeyCredential(apikey), new OpenAIClientOptions{Endpoint = new Uri(endpoint) // 指定api访问地址}).AsIChatClient();// 注册IChatClient实现类型builder.Services.AddChatClient(services =>ChatClientBuilderChatClientExtensions.AsBuilder(chatclient)//-------------------------使用日志-----------------------------.UseLogging() // 引入日志//-------------------------使用日志-----------------------------.Build(services) // 传入注册);// 构建Host实例var host = builder.Build();// 获取ichatclient实现实例IChatClient client = host.Services.GetRequiredService<IChatClient>();// 作为缓存对象构分布式缓存// 输入上下文 添加多轮会话历史 GetResponseAsync() 接受消息列表// 获取http请求响应(流式)List<ChatMessage> history = [new ChatMessage(ChatRole.Assistant, "你是一个英语助手,拥有10年初中教学经验,对于用户提问,英文回复并用中文解释。")]; // 构建基本背景消息Console.WriteLine("开始会话,输入 bye 结束会话。");//-------------------------对话配置实例--------------------------ChatOptions chatOptions = new ChatOptions();// 设置模型为思考模型chatOptions.ModelId = modelthink;// 设置Temperature 0.1 - 0.5(严谨、可复现)chatOptions.Temperature = 0.5f;// top-p 0.7-0.85 chatOptions.TopP = 0.7f;// top-k 20-40chatOptions.TopK = 20;//-------------------------对话配置实例--------------------------// 通过控制台输入添加用户角色信息且大模型响应消息作为最后的消息while (true) {Console.Write("Q:");string request = Console.ReadLine();if (request.Contains("bye")){break;}// 输入询问内容并存储到消息集合中history.Add(new ChatMessage(ChatRole.User, request));// 将输出的响应结果进行集合保存List<ChatResponseUpdate> updates = [];//-------------------------对话配置-------------------------await foreach (ChatResponseUpdate update in client.GetStreamingResponseAsync(history, chatOptions)) {// 输出实时流对话结果Console.Write(update);// 存储此次消息响应单项updates.Add(update);}//-------------------------对话配置-------------------------// 添加对话结果保存到历史集合中history.AddMessages(updates);// 每一次对话输出完成进行换行Console.WriteLine();}Console.WriteLine("会话结束");}}
http://www.dtcms.com/a/454593.html

相关文章:

  • php做企业网站管理系统购物网站制作公司
  • Shell test 命令详解
  • html网站素材网网站建设课程设计文献综述
  • 现在还做自适应网站网站设计要学什么
  • 品牌网站建设的关键事项网站遮罩是什么
  • 营销型网站建设排名网站建设公司需要申请icp吗
  • 江门营销网站建设推广的公司
  • 呼和浩特企业网站排名优化昌邑建设局网站
  • 手机网站建设多少钿个人在线做网站免费
  • 企业网站开发时间好看的网站设计
  • 公司的服务器能建设网站吗中国住建网证书查询
  • 乐清建设路小学网站淘宝网站开发多少金额
  • 大四记录10.7
  • 网站繁简通dedecms做的网站手机上看图片变形
  • MySQL的快速入门
  • 【1002】输出第二个整数
  • 网站建设及优化 赣icpwordpress lover
  • 可以看qq空间的网站网站分级怎么做
  • 建设部网站城乡规划资质标准手工活外发加工无押金
  • [Java]PTA:jmu-Java-03面向对象基础-覆盖与toString
  • 电子商务网站建设感悟安装vs2015网站开发
  • P1068 [NOIP 2009 普及组] 分数线划定
  • 邯郸装修网站建设专业的设计网站建设
  • 网站建设网络拓扑微信营销案例ppt
  • 校园网站模板企业邮箱注册方法
  • html5网站开发demoWordPress广告平台主题
  • 非对称加密
  • Java学习之旅第二季-10:包装类
  • h5网站开发框架网站搭建制作公司
  • 韦博在上面做课件的网站叫什么网站设计实施