ai-sdk-ollama
Version:
Vercel AI SDK Provider for Ollama using official ollama-js library
284 lines • 11.4 kB
TypeScript
import { z } from 'zod';
import type { Ollama } from 'ollama';
type OllamaWithWebSearch = Ollama;
/**
* Configuration options for the web search tool
*/
export interface WebSearchToolOptions {
/**
* Timeout for search requests in milliseconds
* @default 30000
*/
timeout?: number;
/**
* Ollama client instance to use for web search
* If not provided, will need to be injected at runtime
*/
client?: OllamaWithWebSearch;
}
/**
* Input schema for web search requests
*/
export declare const webSearchInputSchema: z.ZodObject<{
query: z.ZodString;
maxResults: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export declare const webSearchInputJsonSchema: {
readonly type: 'object';
readonly properties: {
readonly query: {
readonly type: 'string';
readonly minLength: 1;
readonly maxLength: 500;
readonly description: 'The search query to find relevant information on the web';
};
readonly maxResults: {
readonly type: 'integer';
readonly minimum: 1;
readonly maximum: 20;
readonly description: 'Maximum number of search results to return (1-20)';
};
};
readonly required: readonly ['query'];
readonly additionalProperties: false;
};
/**
* Output schema for web search results
*/
export type WebSearchOutput = {
results: Array<{
title: string;
url: string;
snippet: string;
publishedDate?: string;
}>;
searchQuery: string;
totalResults: number;
};
export declare function webSearch(options?: WebSearchToolOptions): ({
title?: string;
providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
metadata?: import("@ai-sdk/provider").JSONObject;
inputSchema: import("ai").FlexibleSchema<{
query: string;
maxResults?: number | undefined;
}>;
contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
query: string;
maxResults?: number | undefined;
}, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputDelta?: ((options: {
inputTextDelta: string;
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputAvailable?: ((options: {
input: {
query: string;
maxResults?: number | undefined;
};
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
toModelOutput?: ((options: {
toolCallId: string;
input: {
query: string;
maxResults?: number | undefined;
};
output: NoInfer<WebSearchOutput>;
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
description?: string | ((options: {
context: NoInfer<import("@ai-sdk/provider-utils").Context>;
experimental_sandbox?: import("ai").Experimental_SandboxSession;
}) => string) | undefined;
strict?: boolean;
inputExamples?: {
input: NoInfer<{
query: string;
maxResults?: number | undefined;
}>;
}[] | undefined;
id?: never;
isProviderExecuted?: never;
args?: never;
supportsDeferredResults?: never;
} & {
type?: undefined | 'function';
} & {
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
}) | ({
title?: string;
providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
metadata?: import("@ai-sdk/provider").JSONObject;
inputSchema: import("ai").FlexibleSchema<{
query: string;
maxResults?: number | undefined;
}>;
contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
query: string;
maxResults?: number | undefined;
}, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputDelta?: ((options: {
inputTextDelta: string;
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputAvailable?: ((options: {
input: {
query: string;
maxResults?: number | undefined;
};
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
toModelOutput?: ((options: {
toolCallId: string;
input: {
query: string;
maxResults?: number | undefined;
};
output: NoInfer<WebSearchOutput>;
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
description?: string | ((options: {
context: NoInfer<import("@ai-sdk/provider-utils").Context>;
experimental_sandbox?: import("ai").Experimental_SandboxSession;
}) => string) | undefined;
strict?: boolean;
inputExamples?: {
input: NoInfer<{
query: string;
maxResults?: number | undefined;
}>;
}[] | undefined;
id?: never;
isProviderExecuted?: never;
args?: never;
supportsDeferredResults?: never;
} & {
type: 'dynamic';
} & {
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
}) | ({
title?: string;
providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
metadata?: import("@ai-sdk/provider").JSONObject;
inputSchema: import("ai").FlexibleSchema<{
query: string;
maxResults?: number | undefined;
}>;
contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
query: string;
maxResults?: number | undefined;
}, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputDelta?: ((options: {
inputTextDelta: string;
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputAvailable?: ((options: {
input: {
query: string;
maxResults?: number | undefined;
};
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
toModelOutput?: ((options: {
toolCallId: string;
input: {
query: string;
maxResults?: number | undefined;
};
output: NoInfer<WebSearchOutput>;
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
type: 'provider';
id: `${string}.${string}`;
args: Record<string, unknown>;
description?: never;
strict?: never;
inputExamples?: never;
} & {
isProviderExecuted: false;
supportsDeferredResults?: never;
} & {
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
}) | ({
title?: string;
providerOptions?: import("@ai-sdk/provider-utils").ProviderOptions;
metadata?: import("@ai-sdk/provider").JSONObject;
inputSchema: import("ai").FlexibleSchema<{
query: string;
maxResults?: number | undefined;
}>;
contextSchema?: import("ai").FlexibleSchema<import("@ai-sdk/provider-utils").Context> | undefined;
needsApproval?: boolean | import("@ai-sdk/provider-utils").ToolNeedsApprovalFunction<{
query: string;
maxResults?: number | undefined;
}, NoInfer<import("@ai-sdk/provider-utils").Context>> | undefined;
onInputStart?: ((options: import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputDelta?: ((options: {
inputTextDelta: string;
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
onInputAvailable?: ((options: {
input: {
query: string;
maxResults?: number | undefined;
};
} & import("ai").ToolExecutionOptions<NoInfer<import("@ai-sdk/provider-utils").Context>>) => void | PromiseLike<void>) | undefined;
toModelOutput?: ((options: {
toolCallId: string;
input: {
query: string;
maxResults?: number | undefined;
};
output: NoInfer<WebSearchOutput>;
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
} & {
outputSchema?: import("ai").FlexibleSchema<WebSearchOutput> | undefined;
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
} & {
type: 'provider';
id: `${string}.${string}`;
args: Record<string, unknown>;
description?: never;
strict?: never;
inputExamples?: never;
} & {
isProviderExecuted: true;
supportsDeferredResults?: boolean;
} & {
execute: import("ai").ToolExecuteFunction<{
query: string;
maxResults?: number | undefined;
}, WebSearchOutput, NoInfer<import("@ai-sdk/provider-utils").Context>>;
});
export {};
//# sourceMappingURL=web-search.d.ts.map