Spaces:
Runtime error
Runtime error
| // create a cloudclient class that takes in an api key and an optional database | |
| // this should wrap ChromaClient and specify the auth scheme correctly | |
| import { ChromaClient } from "./ChromaClient"; | |
| interface CloudClientParams { | |
| apiKey?: string; | |
| database?: string; | |
| cloudHost?: string; | |
| cloudPort?: string; | |
| } | |
| class CloudClient extends ChromaClient{ | |
| constructor({apiKey, database, cloudHost, cloudPort}: CloudClientParams) { | |
| // If no API key is provided, try to load it from the environment variable | |
| if (!apiKey) { | |
| apiKey = process.env.CHROMA_API_KEY; | |
| } | |
| if (!apiKey) { | |
| throw new Error("No API key provided"); | |
| } | |
| cloudHost = cloudHost || "https://api.trychroma.com"; | |
| cloudPort = cloudPort || "8000"; | |
| const path = `${cloudHost}:${cloudPort}`; | |
| const auth = { | |
| provider: "token", | |
| credentials: apiKey, | |
| providerOptions: { headerType: "X_CHROMA_TOKEN" }, | |
| } | |
| return new ChromaClient({ | |
| path: path, | |
| auth: auth, | |
| database: database, | |
| }) | |
| super() | |
| } | |
| } | |
| export { CloudClient }; | |