(六) Dotnet在AI控制台案例启用遥测数据与工具函数调用
数据遥测
控制台输出遥感数据,需要引入OpenTelemetry.Exporter.Console
。
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.13.1" />
添加遥感Trace
提供实例,并设定源标识,实例构建之后,遥感数据只需要通过souceName
进行绑定,无需进行实例赋值。
// 配置OpenTelemetry采集器
string sourceName = Guid.NewGuid().ToString();
TracerProvider tracerProvider = OpenTelemetry.Sdk.CreateTracerProviderBuilder() .AddSource(sourceName) // 源名称 .AddConsoleExporter() // 控制台导出.Build();
进行遥感数据管理。
ChatClientBuilderChatClientExtensions.AsBuilder(innerClient)
//-------------------------数据遥测-------------------------------.UseOpenTelemetry(sourceName: sourceName,configure: c => c.EnableSensitiveData = false // 是否暴露敏感数据 默认关闭,仅仅调试使用)
//-------------------------数据遥测-------------------------------
//-------------------------本地函数-------------------------------.UseFunctionInvocation()
//-------------------------本地函数-------------------------------.Build(_serviceProvider);
运行输出如下,同时也能看到一次请求对话中,各类监测指标值,与代码配置进行验证。
工具调用
问答过程中,对于一些辅助、简单且固化的操作可以自定义函数,注册到会话配置的工具集中,创建需要调用的函数,为了聚合,可以按照函数用途划分到类中。
internal class WeatherFunction
{/// <summary>/// 获取当前天气/// </summary>/// <returns></returns>internal static string GetCurrentWeather() => Random.Shared.NextDouble() > 0.5 ? "It's sunny" : "It's raining";
}
添加工具到会话配置中。
//------------------------- 注册工具 -----------------------------
// 使用AIFunctionFatory创建AIFunction实例
chatOptions.Tools = [AIFunctionFactory.Create(WeatherFunction.GetCurrentWeather,new AIFunctionFactoryOptions {Description ="获取当前天气" // 描述是必须的,缺少描述大模型无法找到对应的工具
})];
//------------------------- 注册工具 -----------------------------
引入函数调用配置。
ChatClientBuilderChatClientExtensions.AsBuilder(innerClient)
//-------------------------本地函数-------------------------------.UseFunctionInvocation()
//-------------------------本地函数-------------------------------.Build(_serviceProvider);
运行输出结果如下: