2026-04-29 19:49:06 +02:00
|
|
|
import { streamClaude, completeClaudeText } from "./claude";
|
|
|
|
|
import { streamGemini, completeGeminiText } from "./gemini";
|
2026-05-09 14:55:51 +08:00
|
|
|
import { streamOpenAI, completeOpenAIText } from "./openai";
|
2026-04-29 19:49:06 +02:00
|
|
|
import { providerForModel } from "./models";
|
|
|
|
|
import type { StreamChatParams, StreamChatResult, UserApiKeys } from "./types";
|
|
|
|
|
|
|
|
|
|
export * from "./types";
|
|
|
|
|
export * from "./models";
|
|
|
|
|
|
|
|
|
|
export async function streamChatWithTools(
|
|
|
|
|
params: StreamChatParams,
|
|
|
|
|
): Promise<StreamChatResult> {
|
|
|
|
|
const provider = providerForModel(params.model);
|
|
|
|
|
if (provider === "claude") return streamClaude(params);
|
2026-05-09 14:55:51 +08:00
|
|
|
if (provider === "openai") return streamOpenAI(params);
|
2026-04-29 19:49:06 +02:00
|
|
|
return streamGemini(params);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function completeText(params: {
|
|
|
|
|
model: string;
|
|
|
|
|
systemPrompt?: string;
|
|
|
|
|
user: string;
|
|
|
|
|
maxTokens?: number;
|
|
|
|
|
apiKeys?: UserApiKeys;
|
|
|
|
|
}): Promise<string> {
|
|
|
|
|
const provider = providerForModel(params.model);
|
|
|
|
|
if (provider === "claude") return completeClaudeText(params);
|
2026-05-09 14:55:51 +08:00
|
|
|
if (provider === "openai") return completeOpenAIText(params);
|
2026-04-29 19:49:06 +02:00
|
|
|
return completeGeminiText(params);
|
|
|
|
|
}
|