import {z} from 'zod' export type GetApiV1PromptVersionsPromptVersionIdArgs = {prompt_version_id: string}; export type GetApiV1PromptVersionsPromptVersionIdOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const modelProvider = z.enum(["OPENAI", "AZURE_OPENAI", "ANTHROPIC", "GOOGLE", "DEEPSEEK", "XAI", "OLLAMA", "AWS", "CEREBRAS", "FIREWORKS", "GROQ", "MOONSHOT", "MINIMAX", "PERPLEXITY", "TOGETHER", "ZAI", "META"]); export const textContentPart = z.object({type: z.literal("text"), text: z.string()}); export const toolCallFunction = z.object({type: z.literal("function"), name: z.string(), arguments: z.string()}); export const toolCallContentPart = z.object({type: z.literal("tool_call"), tool_call_id: z.string(), tool_call: toolCallFunction}); export const toolResultContentPart = z.object({type: z.literal("tool_result"), tool_call_id: z.string(), tool_result: z.union([z.boolean(), z.number().int(), z.number(), z.string(), z.record(z.string(), z.unknown()), z.array(z.unknown())]).nullable()}); export const promptMessage = z.object({role: z.enum(["user", "assistant", "model", "ai", "tool", "system", "developer"]), content: z.union([z.string(), z.array(z.discriminatedUnion("type", [textContentPart, toolCallContentPart, toolResultContentPart]))])}); export const promptChatTemplate = z.object({type: z.literal("chat"), messages: z.array(promptMessage)}); export const promptStringTemplate = z.object({type: z.literal("string"), template: z.string()}); export const promptTemplateType = z.enum(["STR", "CHAT"]); export const promptTemplateFormat = z.enum(["MUSTACHE", "F_STRING", "NONE"]); export const promptOpenAIInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptOpenAIInvocationParameters = z.object({type: z.literal("openai"), openai: promptOpenAIInvocationParametersContent}); export const promptAzureOpenAIInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptAzureOpenAIInvocationParameters = z.object({type: z.literal("azure_openai"), azure_openai: promptAzureOpenAIInvocationParametersContent}); export const promptAnthropicOutputConfig = z.object({effort: z.enum(["low", "medium", "high", "xhigh", "max"]).optional()}); export const promptAnthropicThinkingConfigDisabled = z.object({type: z.literal("disabled")}); export const promptAnthropicThinkingConfigEnabled = z.object({type: z.literal("enabled"), budget_tokens: z.number().int().gte(1024), display: z.enum(["summarized", "omitted"]).optional()}); export const promptAnthropicThinkingConfigAdaptive = z.object({type: z.literal("adaptive"), display: z.enum(["summarized", "omitted"]).optional()}); export const promptAnthropicInvocationParametersContent = z.object({max_tokens: z.number().int(), temperature: z.number().optional(), top_p: z.number().optional(), stop_sequences: z.array(z.string()).optional(), output_config: promptAnthropicOutputConfig.optional(), thinking: z.discriminatedUnion("type", [promptAnthropicThinkingConfigDisabled, promptAnthropicThinkingConfigEnabled, promptAnthropicThinkingConfigAdaptive]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptAnthropicInvocationParameters = z.object({type: z.literal("anthropic"), anthropic: promptAnthropicInvocationParametersContent}); export const promptGoogleThinkingConfig = z.object({thinking_budget: z.number().int().optional(), thinking_level: z.enum(["minimal", "low", "medium", "high"]).optional(), include_thoughts: z.boolean().optional()}); export const promptGoogleInvocationParametersContent = z.object({temperature: z.number().optional(), max_output_tokens: z.number().int().optional(), stop_sequences: z.array(z.string()).optional(), presence_penalty: z.number().optional(), frequency_penalty: z.number().optional(), top_p: z.number().optional(), top_k: z.number().int().optional(), thinking_config: promptGoogleThinkingConfig.optional()}); export const promptGoogleInvocationParameters = z.object({type: z.literal("google"), google: promptGoogleInvocationParametersContent}); export const promptDeepSeekInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptDeepSeekInvocationParameters = z.object({type: z.literal("deepseek"), deepseek: promptDeepSeekInvocationParametersContent}); export const promptXAIInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptXAIInvocationParameters = z.object({type: z.literal("xai"), xai: promptXAIInvocationParametersContent}); export const promptOllamaInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptOllamaInvocationParameters = z.object({type: z.literal("ollama"), ollama: promptOllamaInvocationParametersContent}); export const promptAwsInvocationParametersContent = z.object({max_tokens: z.number().int().optional(), temperature: z.number().optional(), top_p: z.number().optional(), stop_sequences: z.array(z.string()).optional()}); export const promptAwsInvocationParameters = z.object({type: z.literal("aws"), aws: promptAwsInvocationParametersContent}); export const promptCerebrasInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptCerebrasInvocationParameters = z.object({type: z.literal("cerebras"), cerebras: promptCerebrasInvocationParametersContent}); export const promptFireworksInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptFireworksInvocationParameters = z.object({type: z.literal("fireworks"), fireworks: promptFireworksInvocationParametersContent}); export const promptGroqInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptGroqInvocationParameters = z.object({type: z.literal("groq"), groq: promptGroqInvocationParametersContent}); export const promptMoonshotInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptMoonshotInvocationParameters = z.object({type: z.literal("moonshot"), moonshot: promptMoonshotInvocationParametersContent}); export const promptPerplexityInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptPerplexityInvocationParameters = z.object({type: z.literal("perplexity"), perplexity: promptPerplexityInvocationParametersContent}); export const promptTogetherInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptTogetherInvocationParameters = z.object({type: z.literal("together"), together: promptTogetherInvocationParametersContent}); export const promptZAIInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptZAIInvocationParameters = z.object({type: z.literal("zai"), zai: promptZAIInvocationParametersContent}); export const promptMetaInvocationParametersContent = z.object({temperature: z.number().optional(), max_tokens: z.number().int().optional(), max_completion_tokens: z.number().int().optional(), frequency_penalty: z.number().optional(), presence_penalty: z.number().optional(), top_p: z.number().optional(), seed: z.number().int().optional(), stop: z.array(z.string()).optional(), reasoning_effort: z.enum(["none", "minimal", "low", "medium", "high", "xhigh"]).optional(), extra_body: z.record(z.string(), z.unknown()).optional()}); export const promptMetaInvocationParameters = z.object({type: z.literal("meta"), meta: promptMetaInvocationParametersContent}); export const promptToolFunctionDefinition = z.object({name: z.string(), description: z.string().optional(), parameters: z.record(z.string(), z.unknown()).optional(), strict: z.boolean().optional()}); export const promptToolFunction = z.object({type: z.literal("function"), function: promptToolFunctionDefinition}); export const promptToolRaw = z.object({type: z.literal("raw"), raw: z.record(z.string(), z.unknown())}); export const promptToolChoiceNone = z.object({type: z.literal("none")}); export const promptToolChoiceZeroOrMore = z.object({type: z.literal("zero_or_more")}); export const promptToolChoiceOneOrMore = z.object({type: z.literal("one_or_more")}); export const promptToolChoiceSpecificFunctionTool = z.object({type: z.literal("specific_function"), function_name: z.string()}); export const promptTools = z.object({type: z.literal("tools"), tools: z.array(z.discriminatedUnion("type", [promptToolFunction, promptToolRaw])), tool_choice: z.discriminatedUnion("type", [promptToolChoiceNone, promptToolChoiceZeroOrMore, promptToolChoiceOneOrMore, promptToolChoiceSpecificFunctionTool]).optional(), disable_parallel_tool_calls: z.boolean().optional()}); export const promptResponseFormatJSONSchemaDefinition = z.object({name: z.string(), description: z.string().optional(), schema: z.record(z.string(), z.unknown()).optional(), strict: z.boolean().optional()}); export const promptResponseFormatJSONSchema = z.object({type: z.literal("json_schema"), json_schema: promptResponseFormatJSONSchemaDefinition}); export const promptVersion = z.object({description: z.string().nullable().optional(), metadata: z.record(z.string(), z.unknown()).optional(), model_provider: modelProvider, model_name: z.string(), template: z.discriminatedUnion("type", [promptChatTemplate, promptStringTemplate]), template_type: promptTemplateType, template_format: promptTemplateFormat, invocation_parameters: z.discriminatedUnion("type", [promptOpenAIInvocationParameters, promptAzureOpenAIInvocationParameters, promptAnthropicInvocationParameters, promptGoogleInvocationParameters, promptDeepSeekInvocationParameters, promptXAIInvocationParameters, promptOllamaInvocationParameters, promptAwsInvocationParameters, promptCerebrasInvocationParameters, promptFireworksInvocationParameters, promptGroqInvocationParameters, promptMoonshotInvocationParameters, promptPerplexityInvocationParameters, promptTogetherInvocationParameters, promptZAIInvocationParameters, promptMetaInvocationParameters]), tools: promptTools.nullable().optional(), response_format: promptResponseFormatJSONSchema.nullable().optional(), id: z.string(), created_at: z.string()}); export const getPromptResponseBody = z.object({data: promptVersion}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get prompt version by ID * * GET /v1/prompt_versions/{prompt_version_id} */ export const getApiV1PromptVersionsPromptVersionId = async (args: GetApiV1PromptVersionsPromptVersionIdArgs, options: GetApiV1PromptVersionsPromptVersionIdOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/v1/prompt_versions/${encodeURIComponent(String(args.prompt_version_id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getPromptResponseBody, await res.json()) };