Skip to main content
Glama
ask-duck.tsโ€ข1.94 kB
import { ProviderManager } from '../providers/manager.js'; import { ResponseCache } from '../services/cache.js'; import { formatDuckResponse } from '../utils/ascii-art.js'; import { logger } from '../utils/logger.js'; export async function askDuckTool( providerManager: ProviderManager, cache: ResponseCache, args: Record<string, unknown> ) { const { prompt, provider, model, temperature } = args as { prompt?: string; provider?: string; model?: string; temperature?: number; }; if (!prompt) { throw new Error('Prompt is required'); } // Validate model if provided if (model && provider) { const isValid = providerManager.validateModel(provider, model); if (!isValid) { logger.warn(`Model ${model} may not be valid for provider ${provider}`); } } // Generate cache key const cacheKey = cache.generateKey( provider || 'default', prompt, { model, temperature } ); // Try to get cached response const { value: response, cached } = await cache.getOrSet( cacheKey, async () => { return await providerManager.askDuck(provider, prompt, { model, temperature, }); } ); // Format the response const formattedResponse = formatDuckResponse( response.nickname, response.content, response.model ); // Add usage info if available let usageInfo = ''; if (response.usage) { usageInfo = `\n\n๐Ÿ“Š Tokens used: ${response.usage.total_tokens} (${response.usage.prompt_tokens} prompt, ${response.usage.completion_tokens} completion)`; } // Add cache and latency info const metaInfo = `\nโฑ๏ธ Latency: ${response.latency}ms | ${cached ? '๐Ÿ’พ Cached' : '๐Ÿ”„ Fresh'}`; logger.info(`Duck ${response.nickname} responded to query ${cached ? '(cached)' : ''}`); return { content: [ { type: 'text', text: formattedResponse + usageInfo + metaInfo, }, ], }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nesquikm/mcp-rubber-duck'

If you have feedback or need assistance with the MCP directory API, please join our Discord server