{"_id":"@arclabs561/llm-utils","name":"@arclabs561/llm-utils","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@arclabs561/llm-utils","version":"0.1.0","description":"Shared LLM utility library for text-only LLM calls across multiple providers","type":"module","main":"src/index.mjs","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./src/index.mjs"},"./providers":"./src/providers/index.mjs"},"scripts":{"test":"node --test test/*.test.mjs","test:watch":"node --test --watch test/*.test.mjs"},"keywords":["llm","openai","anthropic","gemini","ai","text-generation"],"author":{"name":"arclabs561","email":"henry@henrywallace.io"},"license":"MIT","engines":{"node":">=18.0.0"},"gitHead":"20c0c0b98ed4eb5b6177bdac318647ca0988ffdd","_id":"@arclabs561/llm-utils@0.1.0","_nodeVersion":"25.1.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-W+h7ilvploXnpz4w01Qgf1X1xxEfsRM9v0GDy7TIT7mG4OxPwAj5+MwXBo39cqKl4/VC2WrZ9DG1XQnIT0HSUA==","shasum":"a637d5155b7771fe6b640b32456a4711411cf488","tarball":"https://registry.npmjs.org/@arclabs561/llm-utils/-/llm-utils-0.1.0.tgz","fileCount":10,"unpackedSize":24016,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFFCh36yGAkuG5mmilkfDlh04Jwj1kDmB7ft+U++LxpzAiAk9CCGor6ZYqCHTUrmoE/UT5NV1/J6qHPzhPeUtqvfMQ=="}]},"_npmUser":{"name":"arclabs561","email":"femtobop@gmail.com"},"directories":{},"maintainers":[{"name":"arclabs561","email":"femtobop@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/llm-utils_0.1.0_1762831551051_0.09558490443757295"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-11T03:25:50.916Z","0.1.0":"2025-11-11T03:25:51.225Z","modified":"2025-11-11T03:25:51.595Z"},"maintainers":[{"name":"arclabs561","email":"femtobop@gmail.com"}],"description":"Shared LLM utility library for text-only LLM calls across multiple providers","keywords":["llm","openai","anthropic","gemini","ai","text-generation"],"author":{"name":"arclabs561","email":"henry@henrywallace.io"},"license":"MIT","readme":"# llm-utils\n\nShared LLM utility library for text-only LLM calls.\n\n## Features\n\n- Unified API for OpenAI, Anthropic (Claude), and Google (Gemini)\n- Auto-detection of provider from environment variables\n- Simple, consistent interface across providers\n- Error handling and retries\n- JSON extraction utilities\n\n## Installation\n\n```bash\nnpm install @arclabs561/llm-utils\n```\n\n## Usage\n\n### Basic Usage\n\n```javascript\nimport { callLLM, detectProvider } from '@arclabs561/llm-utils';\n\n// Auto-detect provider from environment\nconst provider = detectProvider();\nif (provider) {\n  const response = await callLLM('Your prompt here', provider.provider, provider.apiKey);\n  console.log(response);\n}\n```\n\n### Tiered Model Selection\n\nThe library supports two tiers: `simple` (fast/cheap) and `advanced` (higher quality).\n\n```javascript\nimport { callLLM, detectProvider, MODEL_TIERS } from '@arclabs561/llm-utils';\n\nconst provider = detectProvider();\n\n// Use simple models (default) - fast and cheap\nconst fastResponse = await callLLM('Prompt', provider.provider, provider.apiKey, {\n  tier: 'simple' // gpt-4o-mini, claude-haiku, gemini-flash\n});\n\n// Use advanced models - higher quality, slower, more expensive\nconst qualityResponse = await callLLM('Prompt', provider.provider, provider.apiKey, {\n  tier: 'advanced' // gpt-4o, claude-sonnet, gemini-pro\n});\n```\n\n### Using LLMClient Class\n\n```javascript\nimport { LLMClient } from '@arclabs561/llm-utils';\n\n// Simple tier (default)\nconst client = new LLMClient({ tier: 'simple' });\nconst response = await client.complete('Your prompt');\n\n// Advanced tier\nconst advancedClient = new LLMClient({ tier: 'advanced' });\nconst qualityResponse = await advancedClient.complete('Your prompt');\n```\n\n## Environment Variables\n\nThe library auto-detects providers from these environment variables:\n\n- `GEMINI_API_KEY` - Google Gemini\n- `OPENAI_API_KEY` - OpenAI\n- `ANTHROPIC_API_KEY` - Anthropic Claude\n- `VLM_PROVIDER` - Explicit provider selection (gemini, openai, claude)\n- `API_KEY` - Fallback (defaults to gemini)\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-0dab83494b8385e779fb53a15863b0a7"}