{"_id":"@anygpt/ai-provider","name":"@anygpt/ai-provider","dist-tags":{"latest":"0.3.0"},"versions":{"0.3.0":{"name":"@anygpt/ai-provider","version":"0.3.0","description":"AI provider wrapper with function calling - uses @anygpt/router internally","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/genai-tools/anygpt.git","directory":"packages/ai-provider"},"publishConfig":{"access":"public"},"dependencies":{},"devDependencies":{},"keywords":["ai","function-calling","tool-use","llm","agentic"],"gitHead":"ee0eafad2507f7d79dd8b3e8bf1d57cbd078852f","_id":"@anygpt/ai-provider@0.3.0","bugs":{"url":"https://github.com/genai-tools/anygpt/issues"},"homepage":"https://github.com/genai-tools/anygpt#readme","_nodeVersion":"24.10.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-3Ra7N7NMj9FWI2qFM0xIwfQWgALNRr4ZCBY/qS1P6yIro5z/9Gq+lZJ2w2ka5/1uTGVMWQBnPhsl9Bch7a2ctg==","shasum":"07e38ed83061e2f9cf7653417a11d712584cdece","tarball":"https://registry.npmjs.org/@anygpt/ai-provider/-/ai-provider-0.3.0.tgz","fileCount":6,"unpackedSize":14878,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDo/c+ll5RkX8j8g+Pl2Ylx3t33DH818SuWYx4l48XkWAIgZSJ7MCKX+HLW0lAjDs4OArsSWziwD9izJbEDCEqrZYs="}]},"_npmUser":{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"},"directories":{},"maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-provider_0.3.0_1761045477474_0.5536701987179244"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-21T11:17:57.358Z","0.3.0":"2025-10-21T11:17:57.676Z","modified":"2025-10-21T11:17:57.965Z"},"maintainers":[{"name":"theplenkov-npm","email":"petr.plenkov@gmail.com"}],"description":"AI provider wrapper with function calling - uses @anygpt/router internally","homepage":"https://github.com/genai-tools/anygpt#readme","keywords":["ai","function-calling","tool-use","llm","agentic"],"repository":{"type":"git","url":"git+https://github.com/genai-tools/anygpt.git","directory":"packages/ai-provider"},"bugs":{"url":"https://github.com/genai-tools/anygpt/issues"},"readme":"# @anygpt/ai-provider\n\nAI provider wrapper with function calling support. Wraps `@anygpt/router` for provider-agnostic AI interactions with agentic capabilities.\n\n## Features\n\n- ✅ **Provider-agnostic** - Uses `@anygpt/router` internally\n- ✅ **Function calling** - Normalized across OpenAI/Anthropic\n- ✅ **Token tracking** - Usage statistics for cost monitoring\n- ✅ **Error handling** - Robust error handling and retries\n- ✅ **Type-safe** - Full TypeScript support\n\n## Installation\n\n```bash\nnpm install @anygpt/ai-provider\n```\n\n## Usage\n\n```typescript\nimport { AIProvider } from '@anygpt/ai-provider';\nimport { createRouter } from '@anygpt/router';\n\n// Create router (handles actual API calls)\nconst router = createRouter(config);\n\n// Create AI provider\nconst provider = new AIProvider(router, {\n  provider: 'openai',\n  model: 'gpt-4o-mini',\n});\n\n// Simple chat\nconst response = await provider.chat({\n  messages: [\n    { role: 'user', content: 'Hello!' }\n  ]\n});\n\nconsole.log(response.message); // AI response\nconsole.log(response.usage);   // Token usage\n\n// With function calling\nconst response = await provider.chat({\n  messages: [\n    { role: 'user', content: 'What is the weather in SF?' }\n  ],\n  tools: [\n    {\n      type: 'function',\n      function: {\n        name: 'get_weather',\n        description: 'Get weather for a location',\n        parameters: {\n          type: 'object',\n          properties: {\n            location: { type: 'string' }\n          },\n          required: ['location']\n        }\n      }\n    }\n  ]\n});\n\nif (response.toolCalls) {\n  console.log('AI wants to call:', response.toolCalls[0].function.name);\n}\n```\n\n## Architecture\n\n```\n@anygpt/ai-provider (THIS PACKAGE)\n  ↓ uses\n@anygpt/router (provider routing)\n  ↓ uses\n@anygpt/connector-* (OpenAI, Anthropic, etc.)\n```\n\n**Key Point**: This package does NOT call OpenAI/Anthropic directly. It wraps the router to add agentic capabilities while staying provider-agnostic.\n\n## API\n\n### `AIProvider`\n\n```typescript\nclass AIProvider {\n  constructor(router: any, config: ProviderConfig);\n  \n  chat(request: ChatRequest): Promise<ChatResponse>;\n  stream(request: ChatRequest): AsyncIterator<ChatChunk>; // TODO\n}\n```\n\n### Types\n\n```typescript\ninterface ChatRequest {\n  messages: Message[];\n  tools?: Tool[];\n  model?: string;\n  temperature?: number;\n  maxTokens?: number;\n}\n\ninterface ChatResponse {\n  message: string;\n  toolCalls?: ToolCall[];\n  finishReason: 'stop' | 'tool_calls' | 'length' | 'content_filter';\n  usage: TokenUsage;\n  model?: string;\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-8eb36eeae74f687670425ad5e2aff19e"}