UNPKG

ai-sdk-ollama

Version:

Vercel AI SDK Provider for Ollama using official ollama-js library

79 lines 3.34 kB
import { JSONObject, JSONValue, LanguageModelV4Content, LanguageModelV4FinishReason, LanguageModelV4Usage, SharedV4ProviderMetadata, SharedV4Warning } from '@ai-sdk/provider'; import { ChatResponse, Message as OllamaMessage, Tool, ToolCall } from 'ollama'; import { executeReliableToolCalls, type ReliableToolCallResult } from '../utils/tool-calling-reliability.js'; export type GenerateResult = { content: LanguageModelV4Content[]; finishReason: LanguageModelV4FinishReason; usage: LanguageModelV4Usage; providerMetadata?: SharedV4ProviderMetadata; request?: { body?: unknown; }; response?: { id?: string; timestamp?: Date; modelId?: string; }; warnings: SharedV4Warning[]; }; export interface ParsedToolCall { toolName: string; input: Record<string, unknown>; rawInput: unknown; } /** * Parse Ollama tool calls into a normalized format. * Uses the ToolCall type from the Ollama library for type safety. */ export declare function parseOllamaToolCalls(toolCalls: ToolCall[] | undefined): ParsedToolCall[]; export declare function buildContent(reasoning: string | undefined, includeReasoning: boolean, text: string | undefined, toolCalls: ParsedToolCall[]): LanguageModelV4Content[]; /** * Response fields shared by every `providerMetadata.ollama` payload. Callers * add their own keys (reliability details, etc.) on top. */ export declare function ollamaResponseDetails(response: ChatResponse): Record<string, JSONValue>; /** * Create a LanguageModelV4Usage object from token counts. * V4 uses structured objects for inputTokens and outputTokens. */ export declare function createUsage(inputTokenCount?: number, outputTokenCount?: number, raw?: JSONObject): LanguageModelV4Usage; /** * Usage for a model call, summed across the responses that made it up. Token * counts feed the normalised fields; every Ollama counter and timing is also * summed onto `usage.raw` so callers can read the provider's own shape. */ export declare function aggregateUsage(...responses: ChatResponse[]): LanguageModelV4Usage; export declare function buildGenerationResult(parameters: { modelId: string; messages: OllamaMessage[]; ollamaOptions: Record<string, unknown>; format?: string | Record<string, unknown>; ollamaTools?: Tool[]; warnings: SharedV4Warning[]; response: ChatResponse; followUpResponse?: ChatResponse; parsedToolCalls: ParsedToolCall[]; completionMethod: ReliableToolCallResult['completionMethod']; retryCount: number; errors: string[]; toolResults?: Awaited<ReturnType<typeof executeReliableToolCalls>>; reliable: boolean; finalTextOverride?: string; keep_alive?: string | number; think?: boolean | 'low' | 'medium' | 'high'; }): GenerateResult; export declare function buildObjectGenerationResult(parameters: { modelId: string; messages: OllamaMessage[]; ollamaOptions: Record<string, unknown>; format?: string | Record<string, unknown>; tools?: Tool[]; warnings: SharedV4Warning[]; response: ChatResponse; text: string; recoveryMethod: 'natural' | 'retry' | 'fallback' | 'type_fix' | 'text_repair'; retryCount: number; errors?: string[]; keep_alive?: string | number; }): GenerateResult; //# sourceMappingURL=chat-result.d.ts.map