{"_id":"@camaratech/ai-client","name":"@camaratech/ai-client","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@camaratech/ai-client","version":"1.0.0","type":"module","description":"Cliente JavaScript para integração com CamaraTech AI Service","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/camaratech/ai-service.git","directory":"sdk"},"scripts":{"build":"rollup -c","dev":"rollup -c -w","prepublishOnly":"npm run build","test":"echo \"No tests specified\" && exit 0"},"keywords":["ai","claude","grok","openai","camaratech"],"author":{"name":"CamaraTech"},"license":"MIT","dependencies":{"axios":"^1.2.1"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.5","rollup":"^4.9.0","tslib":"^2.8.1","typescript":"^5.3.3"},"peerDependencies":{"axios":"^1.2.1"},"_id":"@camaratech/ai-client@1.0.0","bugs":{"url":"https://github.com/camaratech/ai-service/issues"},"homepage":"https://github.com/camaratech/ai-service#readme","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-yjTHMwbCAJelflR420m8f2g3sZV9c7mjVmqpZwP2+JIpvhIk2X+kLYXyxMc9/Y4kLX7YL38vOrt/hbq4G4Ei6g==","shasum":"fb03fdbe57dc7fb8df376ec70600d9fc2ea2c283","tarball":"https://registry.npmjs.org/@camaratech/ai-client/-/ai-client-1.0.0.tgz","fileCount":20,"unpackedSize":31056,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE7g35etic9TnWEpeFIjhig1F+cU3ma/BAPbS9WH5oLKAiALKxshH1WlDZCm8KMHglHmHDabBiP1AgWh7j0cms3fyQ=="}]},"_npmUser":{"name":"robsonsuzin","email":"robsonsuzin@hotmail.com"},"directories":{},"maintainers":[{"name":"robsonsuzin","email":"robsonsuzin@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-client_1.0.0_1763825134918_0.5383306100142984"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-22T15:25:34.827Z","1.0.0":"2025-11-22T15:25:35.114Z","modified":"2025-11-22T15:25:35.439Z"},"maintainers":[{"name":"robsonsuzin","email":"robsonsuzin@hotmail.com"}],"description":"Cliente JavaScript para integração com CamaraTech AI Service","homepage":"https://github.com/camaratech/ai-service#readme","keywords":["ai","claude","grok","openai","camaratech"],"repository":{"type":"git","url":"git+https://github.com/camaratech/ai-service.git","directory":"sdk"},"author":{"name":"CamaraTech"},"bugs":{"url":"https://github.com/camaratech/ai-service/issues"},"license":"MIT","readme":"# @camaratech/ai-client\r\n\r\nCliente JavaScript/TypeScript para integração com CamaraTech AI Service.\r\n\r\n## Instalação\r\n\r\n```bash\r\nnpm install @camaratech/ai-client\r\n```\r\n\r\n## Uso\r\n\r\n### Básico\r\n\r\n```javascript\r\nimport { AIClient } from '@camaratech/ai-client';\r\n\r\nconst client = new AIClient({\r\n  baseURL: 'https://ai.camaratech.com.br/api',\r\n  apiToken: 'seu-token-de-api',\r\n  domain: window.location.hostname, // deve corresponder ao domínio autorizado na unidade\r\n});\r\n\r\n// Gerar conteúdo\r\nconst response = await client.generate('Escreva um texto sobre IA');\r\n\r\nif (response.success) {\r\n  console.log(response.data.content);\r\n  console.log('Tokens usados:', response.data.usage.total_tokens);\r\n} else {\r\n  console.error('Erro:', response.error);\r\n}\r\n```\r\n\r\n### Com opções\r\n\r\n```javascript\r\nconst response = await client.generate('Escreva um texto sobre IA', {\r\n  provider: 'claude',\r\n  model: 'claude-3-5-sonnet-20241022',\r\n  max_tokens: 4096,\r\n  temperature: 0.2,\r\n});\r\n```\r\n\r\n### Com metadata\r\n\r\n```javascript\r\nconst response = await client.generate('Prompt aqui', {\r\n  metadata: {\r\n    context: 'proposition',\r\n    proposition_id: 123,\r\n  },\r\n});\r\n```\r\n\r\n## API\r\n\r\n### `new AIClient(config)`\r\n\r\nCria uma nova instância do cliente.\r\n\r\n**Config:**\r\n- `baseURL` (string, obrigatório): URL base da API\r\n- `apiToken` (string, obrigatório): Token de API da unidade\r\n- `domain` (string, obrigatório): Domínio autorizado configurado na unidade\r\n- `unitToken` (string, opcional): Token da unidade\r\n- `timeout` (number, opcional): Timeout em ms (padrão: 180000)\r\n\r\n### `client.generate(prompt, options?)`\r\n\r\nGera conteúdo usando IA.\r\n\r\n**Parâmetros:**\r\n- `prompt` (string): Prompt completo\r\n- `options` (object, opcional):\r\n  - `provider`: 'claude' | 'grok' | 'openai'\r\n  - `model`: Nome do modelo\r\n  - `max_tokens`: Número máximo de tokens\r\n  - `temperature`: Temperatura (0-2)\r\n  - `metadata`: Objeto com metadados\r\n\r\n**Retorna:**\r\n```typescript\r\n{\r\n  success: boolean;\r\n  data?: {\r\n    content: string;\r\n    usage: {\r\n      input_tokens: number;\r\n      output_tokens: number;\r\n      total_tokens: number;\r\n      cost: number | null;\r\n    };\r\n  };\r\n  error?: string;\r\n  code?: string;\r\n}\r\n```\r\n\r\n## Exemplos\r\n\r\n### Vue 3 (Composition API)\r\n\r\n```javascript\r\nimport { ref } from 'vue';\r\nimport { AIClient } from '@camaratech/ai-client';\r\n\r\nconst client = new AIClient({\r\n  baseURL: process.env.VITE_AI_SERVICE_URL,\r\n  apiToken: process.env.VITE_AI_SERVICE_TOKEN,\r\n});\r\n\r\nconst content = ref('');\r\nconst loading = ref(false);\r\n\r\nconst generateContent = async () => {\r\n  loading.value = true;\r\n  try {\r\n    const response = await client.generate('Seu prompt aqui');\r\n    if (response.success) {\r\n      content.value = response.data.content;\r\n    }\r\n  } catch (error) {\r\n    console.error(error);\r\n  } finally {\r\n    loading.value = false;\r\n  }\r\n};\r\n```\r\n\r\n### React\r\n\r\n```javascript\r\nimport { useState } from 'react';\r\nimport { AIClient } from '@camaratech/ai-client';\r\n\r\nconst client = new AIClient({\r\n  baseURL: process.env.REACT_APP_AI_SERVICE_URL,\r\n  apiToken: process.env.REACT_APP_AI_SERVICE_TOKEN,\r\n});\r\n\r\nfunction MyComponent() {\r\n  const [content, setContent] = useState('');\r\n  const [loading, setLoading] = useState(false);\r\n\r\n  const generateContent = async () => {\r\n    setLoading(true);\r\n    try {\r\n      const response = await client.generate('Seu prompt aqui');\r\n      if (response.success) {\r\n        setContent(response.data.content);\r\n      }\r\n    } catch (error) {\r\n      console.error(error);\r\n    } finally {\r\n      setLoading(false);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div>\r\n      <button onClick={generateContent} disabled={loading}>\r\n        Gerar\r\n      </button>\r\n      {content && <p>{content}</p>}\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n## Desenvolvimento\r\n\r\n```bash\r\nnpm install\r\nnpm run build\r\n```\r\n\r\n## Licença\r\n\r\nMIT\r\n\r\n","readmeFilename":"README.md","_rev":"1-995fdbce0b4d543f14d0a58370e41a15"}