Description
versions
- 1.36.1-alpha
I have checked the relevant source code and did not find any useful information
Sample:
`var kernel = Kernel.CreateBuilder()
.AddOllamaChatCompletion("qwen2.5:7b", new HttpClient(new LoggingHandler())
{
BaseAddress = new Uri("http://localhost:11434"),
Timeout = TimeSpan.FromMinutes(5)
})
.Build();
var getDateFunc = kernel.CreateFunctionFromMethod(() =>
{
Console.WriteLine("function calling");
return $"{DateTime.Now}";
}, "getDate", "获取当前时间");
kernel.Plugins.AddFromFunctions("local", [getDateFunc]);
kernel.Plugins.AddFromType("local");
var chat = kernel.Services.GetService();
var result = await chat.GetChatMessageContentAsync("现在几点了?", new OllamaPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(autoInvoke: false)
}, kernel);
Console.WriteLine($"调用结果:{JsonSerializer.Serialize(result, new JsonSerializerOptions()
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
WriteIndented = true
})}");
public class LoggingHandler : HttpClientHandler
{
protected override async Task SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
Console.WriteLine($"Request URI: {request.RequestUri}");
Console.WriteLine($"Request Headers:\n{request.Headers}");
if (request.Content != null)
{
var requestBody = await request.Content.ReadAsStringAsync();
Console.WriteLine($"Request Body:\n{requestBody}");
}
var response = await base.SendAsync(request, cancellationToken);
Console.WriteLine($"Response Status: {response.StatusCode}");
Console.WriteLine($"Response Headers:\n{response.Headers}");
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Response Body:\n{responseBody}");
return response;
}
}
`