typescript - Chyba "PineconeClient: Názov projektu nie je nastavený. Najprv zavolajte init()." pri použití TS klienta @pinecone-database/pinecone v0.0.8


Používam oficiálneho TypeScript klienta Pinecone @pinecone-database/pinecone v0.0.8 a keď vykonám jeho metódu Index(), dostanem chybu:

PineconeClient: Project name not set. Call init() first.

Môj kód:

const pinecone = new PineconeClient();
await pinecone.init({
  // (I double checked the env variables are ok):
  environment: process.env.PINECONE_ENVIRONMENT,
  apiKey: process.env.PINECONE_API_KEY,
});
const index = pinecone.Index(process.env.PINECONE_INDEX_NAME); // here, the error is thrown!

Prečo dostávam túto chybu?

Odpoveď č. 1

Stručne

Dostaneme chybu PineconeClient: Project name not set. Call init() first., pretože volanie pinecone.init() bolo neúspešné (avšak zlyhalo ticho a nevygenerovalo žiadnu chybu). Môže to byť spôsobené rôznymi dôvodmi, napr. fetch nie je definované (pretože používate verziu NodeJS staršiu ako 18 a nepoužívate náhradný balík node-fetch) ALEBO zadaný API kľúč alebo prostredie sú nesprávne.

Vysvetlenie

Preskúmal som zdrojový kód klienta Pinecone. A tu je vysvetlenie:

Za scénou volá pinecone.init() endpoint Pinecone /actions/whoami pomocou natívneho fetch(). Požiadavka je odoslaná s 2 parametrami: prostredie a API kľúč; a mala by vrátiť ID vášho projektu Pinecone. Pre viac informácií pozrite zdrojový kód PineconeClient.

Neskôr, ak je ID projektu nedefinované, volanie pinecone.Index() vyvolá chybu. ID projektu je zásadné, pretože tvorí súčasť základnej URL pre volania na skutočné API Pinecone.

Toto volanie môže byť neúspešné z rôznych dôvodov, napr. fetch nie je definovaný (v Node verziách pred 18) ALEBO je nesprávny kľúč API alebo prostredie. Bohužiaľ Pinecone nevytvára žiadnu chybu počas tejto inicializácie klienta. Až neskôr, keď sa pokúsime použiť metódy PineconeClient, dostaneme mätúcu chybu PineconeClient: Názov projektu nie je nastavený. Najprv zavolajte init().

Odpoveď č. 2

Zdá sa, že ide o problém v balíku pinecone 0.0.8.

Zažil som rovnaký problém, keď mám "@pinecone-database/pinecone": "0.0.8", v package.json

Keď som aktualizoval verziu pinecone z 0.0.8 na 0.0.12 a spustil pnpm install, dokážem sa pripojiť a interagovať s pinecone

Výstup príkazu pnpm install:

dependencies:
- @pinecone-database/pinecone 0.0.8
+ @pinecone-database/pinecone 0.0.12 (0.0.14 is available)