Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/adonisja_tyche-finance.json
T

1 line
7.0 KiB
JSON

{"repo": "adonisja/tyche-finance", "files": {"packages/ai/src/providers/deepseek.ts": {"dbd8c24a7b80ddc9f87bc3219bd11a3fd317debd": {"t": 1785745586.6298711, "n": 3281, "h": "42b547240586417f", "c": "import type {\n AIProvider,\n ChatOptions,\n ChatResponse,\n Tool,\n ToolCall,\n} from '../provider';\nimport type { ChatMessage } from '../index';\n\n/**\n * DeepSeek Provider\n * \n * Supports: DeepSeek Chat, DeepSeek Coder\n * Best for: Cost-effectiveness, code generation, reasoning\n * Note: DeepSeek API is OpenAI-compatible\n */\nexport class DeepSeekProvider implements AIProvider {\n private apiKey: string;\n private model: string;\n private baseURL: string = 'https://api.deepseek.com/v1';\n\n constructor(apiKey: string, model: string, baseURL?: string) {\n if (!apiKey) {\n throw new Error('DeepSeek API key is required. Set DEEPSEEK_API_KEY environment variable.');\n }\n this.apiKey = apiKey;\n this.model = model;\n if (baseURL) this.baseURL = baseURL;\n }\n\n async chat(messages: ChatMessage[], options?: ChatOptions): Promise<string> {\n const response = await this.makeRequest(messages, [], options);\n return response.content;\n }\n\n async chatWithTools(\n messages: ChatMessage[],\n tools: Tool[],\n options?: ChatOptions\n ): Promise<ChatResponse> {\n return this.makeRequest(messages, tools, options);\n }\n\n getModel(): string {\n return this.model;\n }\n\n getProvider(): string {\n return 'deepseek';\n }\n\n private async makeRequest(\n messages: ChatMessage[],\n tools: Tool[],\n options?: ChatOptions\n ): Promise<ChatResponse> {\n // DeepSeek uses OpenAI-compatible format\n const requestBody: any = {\n model: this.model,\n messages: messages,\n temperature: options?.temperature ?? 0.7,\n max_tokens: options?.maxTokens,\n };\n\n // Add tools if provided\n if (tools.length > 0) {\n requestBody.tools = tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }));\n }\n\n if (options?.stopSequences) {\n requestBody.stop = options.stopSequences;\n }\n\n // Make API request\n const response = await fetch(`${this.baseURL}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`DeepSeek API error (${response.status}): ${error}`);\n }\n\n const data = await response.json();\n const choice = data.choices[0];\n\n // Extract content and tool calls\n const content = choice.message.content || '';\n const toolCalls: ToolCall[] | undefined = choice.message.tool_calls?.map((tc: any) => ({\n id: tc.id,\n name: tc.function.name,\n arguments: JSON.parse(tc.function.arguments),\n }));\n\n return {\n content,\n toolCalls,\n finishReason: this.mapFinishReason(choice.finish_reason),\n };\n }\n\n private mapFinishReason(reason: string): ChatResponse['finishReason'] {\n switch (reason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool_calls';\n case 'content_filter':\n return 'content_filter';\n default:\n return 'stop';\n }\n }\n}\n"}, "731ca7cfaaba0bccdf145a3c7d0847c638bfa8ef": {"t": 1785754547.1955364, "n": 3281, "h": "42b547240586417f", "c": "import type {\n AIProvider,\n ChatOptions,\n ChatResponse,\n Tool,\n ToolCall,\n} from '../provider';\nimport type { ChatMessage } from '../index';\n\n/**\n * DeepSeek Provider\n * \n * Supports: DeepSeek Chat, DeepSeek Coder\n * Best for: Cost-effectiveness, code generation, reasoning\n * Note: DeepSeek API is OpenAI-compatible\n */\nexport class DeepSeekProvider implements AIProvider {\n private apiKey: string;\n private model: string;\n private baseURL: string = 'https://api.deepseek.com/v1';\n\n constructor(apiKey: string, model: string, baseURL?: string) {\n if (!apiKey) {\n throw new Error('DeepSeek API key is required. Set DEEPSEEK_API_KEY environment variable.');\n }\n this.apiKey = apiKey;\n this.model = model;\n if (baseURL) this.baseURL = baseURL;\n }\n\n async chat(messages: ChatMessage[], options?: ChatOptions): Promise<string> {\n const response = await this.makeRequest(messages, [], options);\n return response.content;\n }\n\n async chatWithTools(\n messages: ChatMessage[],\n tools: Tool[],\n options?: ChatOptions\n ): Promise<ChatResponse> {\n return this.makeRequest(messages, tools, options);\n }\n\n getModel(): string {\n return this.model;\n }\n\n getProvider(): string {\n return 'deepseek';\n }\n\n private async makeRequest(\n messages: ChatMessage[],\n tools: Tool[],\n options?: ChatOptions\n ): Promise<ChatResponse> {\n // DeepSeek uses OpenAI-compatible format\n const requestBody: any = {\n model: this.model,\n messages: messages,\n temperature: options?.temperature ?? 0.7,\n max_tokens: options?.maxTokens,\n };\n\n // Add tools if provided\n if (tools.length > 0) {\n requestBody.tools = tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }));\n }\n\n if (options?.stopSequences) {\n requestBody.stop = options.stopSequences;\n }\n\n // Make API request\n const response = await fetch(`${this.baseURL}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`DeepSeek API error (${response.status}): ${error}`);\n }\n\n const data = await response.json();\n const choice = data.choices[0];\n\n // Extract content and tool calls\n const content = choice.message.content || '';\n const toolCalls: ToolCall[] | undefined = choice.message.tool_calls?.map((tc: any) => ({\n id: tc.id,\n name: tc.function.name,\n arguments: JSON.parse(tc.function.arguments),\n }));\n\n return {\n content,\n toolCalls,\n finishReason: this.mapFinishReason(choice.finish_reason),\n };\n }\n\n private mapFinishReason(reason: string): ChatResponse['finishReason'] {\n switch (reason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool_calls';\n case 'content_filter':\n return 'content_filter';\n default:\n return 'stop';\n }\n }\n}\n"}}}}