moves keystore interface

This commit is contained in:
nai-degen
2023-09-10 19:07:56 -05:00
parent 5d3433268f
commit 21af866fd9
6 changed files with 17 additions and 11 deletions
@@ -1,8 +1,9 @@
import crypto from "crypto"; import crypto from "crypto";
import { Key, KeyProvider, KeyStore } from ".."; import { Key, KeyProvider } from "..";
import { config } from "../../../config"; import { config } from "../../../config";
import { logger } from "../../../logger"; import { logger } from "../../../logger";
import type { AnthropicModelFamily } from "../../models"; import type { AnthropicModelFamily } from "../../models";
import { KeyStore } from "../stores";
import { AnthropicKeyChecker } from "./checker"; import { AnthropicKeyChecker } from "./checker";
// https://docs.anthropic.com/claude/reference/selecting-a-model // https://docs.anthropic.com/claude/reference/selecting-a-model
-6
View File
@@ -65,12 +65,6 @@ export interface KeyProvider<T extends Key = Key> {
recheck(): void; recheck(): void;
} }
export interface KeyStore<T extends Pick<Key, "key">> {
load(): Promise<T[]>;
add(key: T): void;
update(key: T): void;
}
export let keyPool: KeyPool; export let keyPool: KeyPool;
export async function init() { export async function init() {
keyPool = new KeyPool(); keyPool = new KeyPool();
+2 -1
View File
@@ -3,10 +3,11 @@ round-robin access to keys. Keys are stored in the OPENAI_KEY environment
variable as a comma-separated list of keys. */ variable as a comma-separated list of keys. */
import crypto from "crypto"; import crypto from "crypto";
import http from "http"; import http from "http";
import { Key, KeyProvider, Model, KeyStore } from "../index"; import { Key, KeyProvider, Model } from "../index";
import { config } from "../../../config"; import { config } from "../../../config";
import { logger } from "../../../logger"; import { logger } from "../../../logger";
import { OpenAIKeyChecker } from "./checker"; import { OpenAIKeyChecker } from "./checker";
import { KeyStore } from "../stores";
import { getOpenAIModelFamily, OpenAIModelFamily } from "../../models"; import { getOpenAIModelFamily, OpenAIModelFamily } from "../../models";
export type OpenAIModel = export type OpenAIModel =
+2 -1
View File
@@ -1,5 +1,6 @@
import type firebase from "firebase-admin"; import type firebase from "firebase-admin";
import { AIService, Key, KeyStore } from ".."; import { KeyStore } from ".";
import { AIService, Key } from "..";
import { getFirebaseApp } from "../../../config"; import { getFirebaseApp } from "../../../config";
export class FirebaseKeyStore<K extends Pick<Key, "key">> export class FirebaseKeyStore<K extends Pick<Key, "key">>
@@ -1,2 +1,10 @@
import { Key } from "..";
export { FirebaseKeyStore } from "./firebase"; export { FirebaseKeyStore } from "./firebase";
export { MemoryKeyStore } from "./memory"; export { MemoryKeyStore } from "./memory";
export interface KeyStore<T extends Pick<Key, "key">> {
load(): Promise<T[]>;
add(key: T): void;
update(key: T): void;
}
+3 -2
View File
@@ -1,4 +1,5 @@
import { APIFormat, Key, KeyStore } from ".."; import { KeyStore } from ".";
import { APIFormat, Key } from "..";
export class MemoryKeyStore<K extends Pick<Key, "key">> implements KeyStore<K> { export class MemoryKeyStore<K extends Pick<Key, "key">> implements KeyStore<K> {
private env: string; private env: string;
@@ -26,7 +27,7 @@ export class MemoryKeyStore<K extends Pick<Key, "key">> implements KeyStore<K> {
bareKeys = [ bareKeys = [
...new Set(process.env[this.env]?.split(",").map((k) => k.trim())), ...new Set(process.env[this.env]?.split(",").map((k) => k.trim())),
]; ];
return bareKeys.map((key) => ({ key } as K)); return bareKeys.map((key) => ({ key } as K)); // TODO: remove assertion
} }
public add(_key: K) {} public add(_key: K) {}