UNPKG

@eko-ai/eko

Version:

Empowering language to transform human words into action.

151 lines 5.46 kB
import { ProviderV2, JSONSchema7, SharedV2Headers, LanguageModelV2Usage, LanguageModelV2Prompt, LanguageModelV2Content, SharedV2ProviderOptions, LanguageModelV2TextPart, SharedV2ProviderMetadata, LanguageModelV2ToolChoice, LanguageModelV2StreamPart, LanguageModelV2CallWarning, LanguageModelV2FinishReason, LanguageModelV2FunctionTool, LanguageModelV2CallOptions, LanguageModelV2ToolCallPart, LanguageModelV2ToolResultOutput, LanguageModelV2ResponseMetadata } from "@ai-sdk/provider"; import { ToolResult } from "./tools.types"; import TaskContext, { AgentContext } from "../agent/agent-context"; export type LLMprovider = "openai" | "anthropic" | "google" | "bedrock" | "azure" | "openrouter" | "openai-compatible" | "modelscope" | ProviderV2; export type LLMConfig = { provider: LLMprovider; model: string; apiKey: string | (() => Promise<string>); config?: { baseURL?: string | (() => Promise<string>); temperature?: number; topP?: number; topK?: number; maxOutputTokens?: number; [key: string]: any; }; options?: Record<string, any>; fetch?: typeof globalThis.fetch; handler?: (options: LanguageModelV2CallOptions, context?: TaskContext, agentContext?: AgentContext) => Promise<LanguageModelV2CallOptions>; }; export type LLMs = { default: LLMConfig; [key: string]: LLMConfig; }; export type GenerateResult = { llm: string; llmConfig: LLMConfig; text?: string; content: Array<LanguageModelV2Content>; finishReason: LanguageModelV2FinishReason; usage: LanguageModelV2Usage; providerMetadata?: SharedV2ProviderMetadata; request?: { body?: unknown; }; response?: LanguageModelV2ResponseMetadata & { headers?: SharedV2Headers; body?: unknown; }; warnings: Array<LanguageModelV2CallWarning>; }; export type StreamResult = { llm: string; llmConfig: LLMConfig; stream: ReadableStream<LanguageModelV2StreamPart>; request?: { body?: unknown; }; response?: { headers?: SharedV2Headers; }; }; export type LLMRequest = { maxOutputTokens?: number; messages: LanguageModelV2Prompt; toolChoice?: LanguageModelV2ToolChoice; tools?: Array<LanguageModelV2FunctionTool>; temperature?: number; topP?: number; topK?: number; stopSequences?: string[]; abortSignal?: AbortSignal; providerOptions?: SharedV2ProviderOptions; }; export type LLMStreamMessage = ({ type: "text" | "thinking"; streamId: string; streamDone: boolean; text: string; newTextLength: number; } | { type: "file"; mimeType: string; data: string; } | { type: "tool_streaming"; toolName: string; toolCallId: string; paramsText: string; newTextLength: number; } | { type: "tool_use"; toolName: string; toolCallId: string; params: Record<string, any>; } | { type: "tool_running"; toolName: string; toolCallId: string; text: string; streamId: string; streamDone: boolean; newTextLength?: number; } | { type: "tool_result"; toolName: string; toolCallId: string; params: Record<string, any>; toolResult: ToolResult; } | { type: "raw"; rawValue: unknown; } | { type: "error"; error: unknown; } | { type: "finish"; finishReason: LanguageModelV2FinishReason; usage: { promptTokens: number; completionTokens: number; totalTokens: number; }; }) & { providerMetadata?: SharedV2ProviderOptions; }; export type ReActStreamCallback = (message: { type: "loop_start"; request: ReActRequest; loopNum: number; } | LLMStreamMessage | { type: "loop_end"; request: ReActRequest; loopNum: number; continueLoop: boolean; }) => Promise<void>; export type LLMStreamCallback = (message: LLMStreamMessage) => Promise<void>; export type LLMErrorHandler = (request: LLMRequest, error: any, retryNum: number) => Promise<void>; export type LLMFinishHandler = (request: LLMRequest, finishReason: LanguageModelV2FinishReason, value: LanguageModelV2StreamPart, retryNum: number) => Promise<"retry" | void>; export type ReActToolCallCallback = (request: LLMRequest, toolUses: LanguageModelV2ToolCallPart[]) => Promise<LanguageModelV2ToolResultOutput[]>; export type ReActLoopControl = (request: LLMRequest, assistantParts: Array<LanguageModelV2TextPart | LanguageModelV2ToolCallPart>, loopNum: number) => Promise<boolean>; export type ReActToolSchema = { name: string; description?: string; inputSchema: JSONSchema7; execute: (args: Record<string, unknown>, toolCall: LanguageModelV2ToolCallPart) => Promise<LanguageModelV2ToolResultOutput>; }; export interface ReActToolInterface { readonly name: string; readonly description?: string; readonly inputSchema: JSONSchema7; execute: (args: Record<string, unknown>, toolCall: LanguageModelV2ToolCallPart) => Promise<LanguageModelV2ToolResultOutput>; } export type ReActToolsAndCallback = { tools: ReActTool[]; callback?: (request: LLMRequest, toolUses: LanguageModelV2ToolCallPart[], tools: ReActTool[]) => Promise<LanguageModelV2ToolResultOutput[]>; }; export type ToolCallsOrCallback = ReActToolCallCallback | ReActTool[] | ReActToolsAndCallback; export type ReActTool = ReActToolSchema | ReActToolInterface; export type ReActRequest = LLMRequest | Omit<LLMRequest, "tools">; //# sourceMappingURL=llm.types.d.ts.map