autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
38 lines (37 loc) • 1.75 kB
TypeScript
/**
* ClaudeProvider - Anthropic Claude AI 提供商
*
* v2: 支持原生 Function Calling(结构化工具调用)
* - 使用 Anthropic Messages API 的 tools + tool_choice 参数
* - 响应中的 tool_use content blocks → 结构化 functionCall
* - tool_result content blocks 用于回传工具执行结果
*/
import { AiProvider, type AiProviderConfig, type ApiResponse, type ChatContext, type ChatWithToolsOptions, type ChatWithToolsResult } from '../AiProvider.js';
export declare class ClaudeProvider extends AiProvider {
#private;
constructor(config?: AiProviderConfig);
/** 是否支持原生结构化函数调用 */
get supportsNativeToolCalling(): boolean;
chat(prompt: string, context?: ChatContext): Promise<any>;
/**
* 带工具声明的结构化对话 — Anthropic Messages API Tool Use
*
* 接受统一消息格式,内部转换为 Anthropic Messages 格式。
*
* Anthropic 特殊之处:
* - system prompt 是顶层 `system` 字段(非 message)
* - assistant 消息的 content 是 content blocks 数组
* - 工具结果通过 user 消息中的 tool_result blocks 传递
* - tool_choice: {type: 'auto'|'any'|'tool'}(无 'none',不传 tools 即可)
*
* @param prompt fallback prompt
* @param opts 统一参数
* @returns >|null}>}
*/
chatWithTools(prompt: string, opts?: ChatWithToolsOptions): Promise<ChatWithToolsResult>;
summarize(code: string): Promise<{}>;
embed(_text: string | string[]): Promise<never[]>;
supportsEmbedding(): boolean;
_post(url: string, body: Record<string, unknown>, externalSignal?: AbortSignal): Promise<ApiResponse>;
}
export default ClaudeProvider;