Skip to content

Csharp: Ollama connector, with FunctionalChoiceBehavior set Why does' Required (autoInvoke: false) 'still automatically call the function? #10463

Closed
@snake-L

Description

@snake-L

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;
}

}
`

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstaleIssue is stale because it has been open for a while and has no activity

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions