← Artiklar

Kunskapsbas

Så fyller du en coreAI-assistent med data via API:et

coreAI-API:et låter utvecklare fylla en assistent med strukturerade produkter, dokument, innehåll, evenemang, utbildningar, tjänster och kontaktpersoner genom att upserta entiteter från det egna systemet. När datan är inne kan den användas i chatt och sökning.

coreAI-API:et är gjort för system som vill skicka egen data direkt in i en assistent och använda den som svarsunderlag i chatt eller sökning. Integrationen handlar först om att hålla kunskapsbasen uppdaterad, därefter om att välja hur användarna ska möta assistenten: via coreAI-widgeten, ett eget chattgränssnitt eller en ren sökning.

#Börja med assistent, källa och token

Alla anrop mot API v2 går mot https://portal.coreai.no/api/v2 i produktion eller https://stage.coreai.no/api/v2 i testmiljön. API:et använder en Bearer-token, och de viktigaste sökvägarna behöver både assistantId och contentImporterId.

assistantId pekar på assistenten som ska svara. contentImporterId pekar på API-källan där datan lagras. När du läser entiteter tillbaka med externt ID söker coreAI i den angivna källan.

#Upsert är huvudvägen för att fylla assistenten

För en löpande integration bör ditt system skicka en POST till /assistants/{assistantId}/sources/{contentImporterId} varje gång ett objekt skapas eller ändras. Upsert ersätter hela entiteten: första anropet skapar den, senare anrop uppdaterar samma id. Du behöver alltså inte göra extra anrop för att kontrollera om entiteten redan finns – upsert löser det åt dig.

 1{
 2  "data": [
 3    {
 4      "id": "product-123",
 5      "type": "products",
 6      "lastModifiedAt": "2026-04-28T12:00:00Z",
 7      "attributes": {
 8        "productNumber": "123",
 9        "name": "Fjälljacka",
10        "description": "Lätt skaljacka för skiftande väder.",
11        "url": "https://example.com/products/123",
12        "price": 1299,
13        "inStock": true
14      }
15    }
16  ]
17}

Entitetstyperna täcker de vanligaste datakällorna en assistent behöver: products, contents, documents, events, contacts, job_postings och educations. Varje typ har sina egna obligatoriska fält. Produkter behöver till exempel name och productNumber, medan innehåll behöver name och longDescription.

#Använd PATCH när bara delar av entiteten ändras

PATCH mot samma endpoint låter dig skicka enbart de fält som har ändrats. Det passar när ett externt system publicerar små statusändringar, till exempel pris, lagerstatus eller datum.

#Borttagning av entiteter

DELETE tar en enkel lista med id och type och tar bort både entiteten och relationslänkar till den. Använd det när ett objekt inte längre ska kunna dyka upp i svar – till exempel en utgången produkt eller en inställd tjänst.

#Egendefinierade properties gör datan filtrerbar

Vissa entitetstyper kan ha properties med korta, strukturerade värden. Använd camelCase-namn som categoryName, publishedAt eller market, och välj typ string, number, boolean eller date. Samma fält kan senare användas i chatt- och sökanrop med filter som $eq, $gt, $gte, $lt, $lte och $in.

Det här är användbart när en assistent har flera marknader, varugrupper eller publiceringsnivåer. Du kan fylla samma kunskapsbas brett, men be chatten svara från bara en källa, en marknad eller en innehållstyp.

#Chatt kan integreras på tre nivåer

Den enklaste vägen är att använda coreAI:s chattwidget. Då hanterar widgeten samtals-ID, språk, aktuell URL och strömning åt dig. För en skräddarsydd upplevelse kan du anropa /assistants/{assistantId}/chat direkt och skicka question, valfri cid, lang, model, sources, resources, filters och stream.

Om du integrerar chatt själv måste du hämta nödvändig konfiguration från /assistants/{assistantId}/config. Svaret ger tillgängliga modeller, källor och WebSocket-uppsättning för strömning. Chattströmmar publiceras på ai-chat.<cid> med händelserna ChatStreamProgress och ChatStreamUpdated via WebSocket.

Om du inte behöver ett fullständigt samtal kan /assistants/{assistantId}/search användas som kunskapsbassökning. Det returnerar träffar, flikar per typ och eventuellt en AI-genererad sammanfattning. Strömmad sammanfattning använder kanalen ai-summary.<uuid> och händelsen SummaryUpdated.

#En bra integration är en synkronisering, inte en engångsimport

Den robusta modellen är att låta källsystemet äga sanningen och coreAI vara den sökbara, samtalsfärdiga kopian. Skicka uppdateringar med stabila externa ID:n, använd lastModifiedAt, ta bort objekt som inte längre ska ge svar, och lägg på properties som gör filtrering möjlig. Då får assistenten färsk data, spårbara källor och ett chattgränssnitt som kan byggas så enkelt eller specialiserat som din produkt kräver.