Skip to content

Commit 5e9ef89

Browse files
authored
fix: missing providers that handle templating (#8438)
1 parent 2088660 commit 5e9ef89

File tree

3 files changed

+66
-19
lines changed

3 files changed

+66
-19
lines changed

core/llm/autodetect.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,47 @@ const PROVIDER_HANDLES_TEMPLATING: string[] = [
6363
"watsonx",
6464
"nebius",
6565
"relace",
66+
"openrouter",
67+
"deepseek",
68+
"xAI",
69+
"groq",
70+
"gemini",
71+
"docker",
72+
// TODO add these, change to inverted logic so only the ones that need templating are hardcoded
73+
// Asksage.ts
74+
// Azure.ts
75+
// BedrockImport.ts
76+
// Cerebras.ts
77+
// Cloudflare.ts
78+
// CometAPI.ts
79+
// CustomLLM.ts
80+
// DeepInfra.ts
81+
// Fireworks.ts
82+
// Flowise.ts
83+
// FunctionNetwork.ts
84+
// HuggingFaceInferenceAPI.ts
85+
// HuggingFaceTEI.ts
86+
// HuggingFaceTGI.ts
87+
// Inception.ts
88+
// Kindo.ts
89+
// LlamaCpp.ts
90+
// LlamaStack.ts
91+
// Llamafile.ts
92+
// Mock.ts
93+
// Moonshot.ts
94+
// NCompass.ts
95+
// OVHcloud.ts
96+
// Replicate.ts
97+
// Scaleway.ts
98+
// SiliconFlow.ts
99+
// TARS.ts
100+
// Test.ts
101+
// TextGenWebUI.ts
102+
// TransformersJsEmbeddingsProvider.ts
103+
// Venice.ts
104+
// Vllm.ts
105+
// Voyage.ts
106+
// etc
66107
];
67108

68109
const PROVIDER_SUPPORTS_IMAGES: string[] = [

core/llm/index.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,20 @@ export abstract class BaseLLM implements ILLM {
11641164
let citations: null | string[] = null;
11651165

11661166
try {
1167-
{
1167+
if (this.templateMessages) {
1168+
for await (const chunk of this._streamComplete(
1169+
prompt,
1170+
signal,
1171+
completionOptions,
1172+
)) {
1173+
completion.push(chunk);
1174+
interaction?.logItem({
1175+
kind: "chunk",
1176+
chunk: chunk,
1177+
});
1178+
yield { role: "assistant", content: chunk };
1179+
}
1180+
} else {
11681181
if (this.shouldUseOpenAIAdapter("streamChat") && this.openaiAdapter) {
11691182
let body = toChatBody(messages, completionOptions, {
11701183
includeReasoningField: this.supportsReasoningField,

core/llm/openaiTypeConverters.ts

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,32 @@ import {
99
CompletionCreateParams,
1010
} from "openai/resources/index";
1111
import type {
12+
EasyInputMessage,
1213
Response as OpenAIResponse,
13-
ResponseStreamEvent,
14-
ResponseTextDeltaEvent,
15-
ResponseTextDoneEvent,
16-
ResponseReasoningSummaryTextDeltaEvent,
17-
ResponseReasoningSummaryTextDoneEvent,
18-
ResponseReasoningTextDeltaEvent,
19-
ResponseReasoningTextDoneEvent,
14+
ResponseFunctionToolCall,
2015
ResponseInput,
2116
ResponseInputItem,
2217
ResponseInputMessageContentList,
2318
ResponseOutputMessage,
2419
ResponseOutputText,
25-
ResponseFunctionToolCall,
26-
EasyInputMessage,
2720
ResponseReasoningItem,
21+
ResponseReasoningSummaryTextDeltaEvent,
22+
ResponseReasoningSummaryTextDoneEvent,
23+
ResponseReasoningTextDeltaEvent,
24+
ResponseReasoningTextDoneEvent,
25+
ResponseStreamEvent,
26+
ResponseTextDeltaEvent,
2827
} from "openai/resources/responses/responses.mjs";
2928

3029
import {
30+
AssistantChatMessage,
3131
ChatMessage,
3232
CompletionOptions,
33+
MessageContent,
34+
MessagePart,
3335
TextMessagePart,
3436
ThinkingChatMessage,
3537
ToolCallDelta,
36-
AssistantChatMessage,
37-
UserChatMessage,
38-
SystemChatMessage,
39-
ToolResultChatMessage,
40-
MessageContent,
41-
ImageMessagePart,
42-
MessagePart,
4338
} from "..";
4439

4540
function appendReasoningFieldsIfSupported(
@@ -329,8 +324,6 @@ export function fromChatResponse(response: ChatCompletion): ChatMessage[] {
329324
export function fromChatCompletionChunk(
330325
chunk: ChatCompletionChunk,
331326
): ChatMessage | undefined {
332-
console.log("chunk", chunk);
333-
334327
const delta = chunk.choices?.[0]?.delta as
335328
| (ChatCompletionChunk.Choice.Delta & {
336329
reasoning?: string;

0 commit comments

Comments
 (0)