Verified example · TypeScript
Text service
examples/text-service.ts
@cavi-ai/api-clientv0.21.007f0ee45
import { ApiClientError, createApiClient, createRuntimeProviderRegistry } from "@cavi-ai/api-client";
import { createClaudeProviderModule } from "@cavi-ai/api-client/providers/claude/messages";
export function createAssistant(config: { apiKey: string; model: string }) {
const registry = createRuntimeProviderRegistry({
modules: [createClaudeProviderModule({ apiKey: config.apiKey })],
});
const client = createApiClient("claude", { registry, defaultTimeoutMs: 30_000 });
return {
async answer(question: string) {
const result = await client.startRun({ model: config.model, input: question });
if (!result.ok) return result;
const run = result.data;
if (run.status !== "completed") {
const code = run.status === "failed" ? "run_failed"
: run.status === "cancelled" ? "run_cancelled" : "run_incomplete";
throw new ApiClientError(`Run ${run.run_id} has no completed answer (status: ${run.status})`, {
type: "run", code, cause: run,
});
}
const text = run.output ?? run.response;
if (text === undefined) {
throw new ApiClientError(`Run ${run.run_id} completed with no text`, {
type: "run", code: "run_output_missing", cause: run,
});
}
return {
ok: true as const,
source: result.source,
data: { runId: run.run_id, text, tokens: run.tokens },
};
},
dispose: () => client.dispose(),
};
}
Package imports
Referenced by
Artifact provenance
- Package
- @cavi-ai/api-client@0.21.0
- Release
- v0.21.0
- Commit
07f0ee45424c267278f7b0c89a7dcea4e2492cc1- Source
examples/text-service.ts- Tarball SHA-256
0924b5d3a7a40869bd44fedc47a9b8eb9844c2af1fd5c7ca77469d8b7c0b8558- Content SHA-256
24eff463c41582eaf5e70c58f42e5ae13bd12d02fa14ae2a886afa3abf5cdf48