@bilkobibitkov/ai-tool-kit
v0.1.0
Published
Substrate for Bilko-style BYOK AI-tool CLIs — Gemini caller, robust JSON parser, rubric runner.
Maintainers
Readme
@bilkobibitkov/ai-tool-kit
Substrate for Bilko-style BYOK AI-tool CLIs — Gemini caller, robust JSON parser, rubric runner.
Install
npm install @bilkobibitkov/ai-tool-kitZod is an optional peer dependency. Install it if you want schema validation in parseJsonResponse:
npm install zodUsage
callGemini
import { callGemini } from '@bilkobibitkov/ai-tool-kit';
const response = await callGemini({
apiKey: process.env.GEMINI_API_KEY!,
prompt: 'Rate this headline: "10X your revenue in 30 days"',
});
const text = response.candidates[0].content.parts[0].text;parseJsonResponse
Handles markdown-fenced blocks, smart quotes, trailing prose:
import { parseJsonResponse } from '@bilkobibitkov/ai-tool-kit';
parseJsonResponse('```json\n{"score":7}\n```'); // → { score: 7 }
parseJsonResponse('{"score":7}\nSome explanation…'); // → { score: 7 }With Zod validation:
import { z } from 'zod';
const schema = z.object({ score: z.number() });
const result = parseJsonResponse(raw, schema); // typed as { score: number }runRubric
import { runRubric } from '@bilkobibitkov/ai-tool-kit';
const result = await runRubric({
apiKey: process.env.GEMINI_API_KEY!,
rubric: {
prompt: (input) => `Score this: "${input}"`,
schema: { type: 'object', properties: { score: { type: 'number' } } },
map: (raw) => ({ score: (raw as any).score }),
},
input: 'My great headline',
});
console.log(result.scores); // { score: 8 }readApiKeyFromEnv / promptForApiKey
import { readApiKeyFromEnv, promptForApiKey } from '@bilkobibitkov/ai-tool-kit';
const key = readApiKeyFromEnv(['GEMINI_API_KEY', 'GOOGLE_API_KEY'])
?? await promptForApiKey('Gemini API key');CLI formatting
import { printAsTable, printAsJson, printAsMarkdown } from '@bilkobibitkov/ai-tool-kit';
printAsTable([{ dimension: 'Clarity', score: 8 }, { dimension: 'Impact', score: 7 }]);
printAsJson({ score: 7, grade: 'B' });
printAsMarkdown([{ dimension: 'Clarity', score: 8 }]);BYOK env vars
| Priority | Env var | Notes |
|---|---|---|
| 1 | GEMINI_API_KEY | Preferred |
| 2 | GOOGLE_API_KEY | Fallback alias |
License
MIT
