Spaces:
Running
Running
import { streamText as _streamText, convertToCoreMessages } from 'ai'; | |
import { getAPIKey } from '~/lib/.server/llm/api-key'; | |
import { getAnthropicModel } from '~/lib/.server/llm/model'; | |
import { MAX_TOKENS } from './constants'; | |
import { getSystemPrompt } from './prompts'; | |
interface ToolResult<Name extends string, Args, Result> { | |
toolCallId: string; | |
toolName: Name; | |
args: Args; | |
result: Result; | |
} | |
interface Message { | |
role: 'user' | 'assistant'; | |
content: string; | |
toolInvocations?: ToolResult<string, unknown, unknown>[]; | |
} | |
export type Messages = Message[]; | |
export type StreamingOptions = Omit<Parameters<typeof _streamText>[0], 'model'>; | |
export function streamText(messages: Messages, env: Env, options?: StreamingOptions) { | |
return _streamText({ | |
model: getAnthropicModel(getAPIKey(env)), | |
system: getSystemPrompt(), | |
maxTokens: MAX_TOKENS, | |
headers: { | |
'anthropic-beta': 'max-tokens-3-5-sonnet-2024-07-15', | |
}, | |
messages: convertToCoreMessages(messages), | |
...options, | |
}); | |
} | |