conare は Node 18 以降と Bun 向けに API をラップしたもので、依存関係はありません。
npm install conare
import { Conare } from "conare";
const conare = new Conare(); // reads CONARE_API_KEY
const docs = conare.namespace("docs");
await docs.add({ text: "Refunds are available for 30 days." });
const results = await docs.query("how do refunds work?");
Result
[
{
"id": "doc_HmsFWqbQQc2mY03FhVZE",
"text": "Refunds are available for 30 days.",
"score": 0.3192,
"reranked": true,
"metadata": {}
}
]
Date です。
オプション
new Conare({
apiKey: "sk-conare-...", // default: CONARE_API_KEY
baseURL: "https://api.conare.ai", // default: CONARE_BASE_URL
timeout: 60_000, // ms per attempt
maxRetries: 2,
organization: "org_...", // for a multi-organization key
});
{ signal, timeout, idempotencyKey } も受け取ります。
メソッド
| メソッド | 戻り値 |
|---|---|
conare.namespace(name) | ネームスペースのハンドル。メソッドを呼ぶまで何も送信されません |
conare.namespaces({ prefix }) | [{ name, documents, embeddingModel, rerankModel }] |
ns.add(docs) | ID |
ns.write(docs) | [{ id, version, result, chunks, chunksEmbedded }] |
ns.query(query, { topK, filter, rerank, rerankDepth, retrievers, user, userPrefix, excludeIds, hops }) | [{ id, text, score, reranked, metadata }] |
ns.queryPages(query, { maxResults, ... }) | ページの非同期イテレーター |
ns.get(id) | ドキュメント、または null |
ns.list({ limit }) | すべてのドキュメントを走査する非同期イテレーター |
ns.delete(id) | なし |
ns.deleteMany(ids), ns.deleteWhere(filter) | 削除された件数 |
ns.create({ embeddingModel }) | { embeddingModel } |
ns.drop({ force }) | { sourcesDeleted } |
ns.uploadFile(file, name, { id, type, user, metadata, pages, password, layout, wait }) | アップロードと、ready になった後はその Markdown |
ns.getFile(fileId, { user }) | ファイルの最新のアップロード |
conare.parse(file or { url }, { name, type, pages, password, layout, wait }) | ファイルの Markdown。何も保存されません |
conare.getParse(id) | parsing と応答したパース |
conare.embed(texts, { type, outputDtype }) | ベクトル。int8 の場合は { values, scales }(dequantize で元に戻せます) |
conare.rerank(query, documents, { topK }) | [{ index, score, document }] と unscored |
conare.sources | connect、create、list、get、sync、update、delete、types |
conare.organizations() | キーが代理で操作する組織 |
conare.users.delete(user), deletePrefix(prefix) | ユーザーのデータを削除する実行 |
conare.events.list({ cursor, types }) | 変更内容(順序どおり) |
addとwriteは 1 つのドキュメントまたは任意のサイズの配列を受け取り、100 件ずつ送信します。- 全ネームスペースの検索(
POST /query)とanswerにはまだメソッドがありません。HTTP で呼び出してください。
エラー
すべての失敗は、status、code、message、requestId を持つ ConareError をスローします。
import { ConareError } from "conare";
try {
await docs.add({ text: "" });
} catch (err) {
if (err instanceof ConareError) console.log(err.status, err.code); // 400 "invalid_request"
}
| ケース | 動作 |
|---|---|
| レスポンスなし | status は 0、code は timeout または connection_error |
429、5xx、ネットワークエラー | Retry-After またはバックオフの後、最大 maxRetries 回再試行されます |
| 書き込み | Idempotency-Key が付くため、再試行で二重に書き込まれることはありません |