microsoft / microsoft/semantic-kernel-java
Bug: Set ToolCallBehavior.allowAllKernelFunctions(false) doesn't work for getStreamingChatMessageContentsAsync
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 276
- Forks
- 56
- Ø Merge
- 17 Std. 45 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
Describe the bug
I try to invoke toolcall myself in a streaming chat.
I have learned that how to invoke a toolcall in an non-streaming chat. like
Kernel kernel = Kernel.builder().withAIService(ChatCompletionService.class, chatCompletionService)
.withPlugin(KernelPluginFactory.createFromObject(this, "time"))
.build();
chatCompletionService
.getChatMessageContentsAsync("what time is it now?", kernel, InvocationContext.builder()
.withToolCallBehavior(ToolCallBehavior.allowAllKernelFunctions(false))
.build())
.block()
.stream().filter(it->it instanceof OpenAIChatMessageContent<?>)
.map(it->((OpenAIChatMessageContent)it))
.forEach(it->{
System.out.println(it.getToolCall().size());
});
As you can see, I can get the toolCall value;
but when I change to an streaming chat, like
Kernel kernel = Kernel.builder().withAIService(ChatCompletionService.class, chatCompletionService)
.withPlugin(KernelPluginFactory.createFromObject(this, "time"))
.build();
chatCompletionService
.getStreamingChatMessageContentsAsync("what time is it now?", kernel, InvocationContext.builder()
.withToolCallBehavior(ToolCallBehavior.allowAllKernelFunctions(false))
.build())
.filter(it->it instanceof OpenAIStreamingChatMessageContent<?>)
.map(it->(OpenAIStreamingChatMessageContent)it)
.doOnNext(it->{
System.out.println(it.getToolCall().size());
}).subscribe();
the toolCall will always be an empty array.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit getStreamingChatMessageContentsAsync und vergleiche sein Verhalten mit getChatMessageContentsAsync anhand der Beispiele für ToolCallBehavior.allowAllKernelFunctions(false) im Issue. Verfolge, wie OpenAIStreamingChatMessageContent Tool-Aufrufe verfügbar macht; abgeschlossen ist die Aufgabe, wenn die Streaming-Ergebnisse die erwarteten Tool-Aufrufdaten statt eines leeren Arrays enthalten, mit einer Abdeckung für diese Reproduktion.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- api
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100