Intégrer des Documents (Base de connaissances)
PRÉREQUIS : Lancez d'abord
+rw-check-compatibility. Lancez+rw-fetch-api-referencepour charger la dernière référence API avant l'intégration.+rw-setup-api-key— Les identifiants API doivent être configurésUTILISÉ PAR :
+rw-integrate-characters— Les Documents sont liés aux Avatars pour leur donner une connaissance spécifique au domaine
Donnez à vos Characters accès à une connaissance spécifique au domaine. Téléchargez du contenu que votre Avatar peut consulter lors des conversations pour des réponses précises et contextuelles.
Quand utiliser les Documents
| Cas d'usage | Contenu exemple |
|---|---|
| Support client | FAQs, infos produit, politiques d'entreprise, procédures de retour |
| Quizzes & jeux | Banques de questions, réponses correctes, règles de scoring |
| Éducation | Matériel de cours, contenu de référence, objectifs d'apprentissage |
| Expériences de marque | Directives de marque, messagerie, catalogues produits |
Contraintes
- Chaque Avatar supporte jusqu'à 50 000 tokens de connaissance
- Formats supportés : texte brut et Markdown
- Plus de formats prévus pour les futures versions
Flux
Le flux est : Créer un Document → Le lier à un Avatar
Étape 1 : Créer un Document
Node.js
import RunwayML from '@runwayml/sdk';
const client = new RunwayML();
const document = await client.documents.create({
name: 'Product FAQ',
content: `# Product FAQ
## What is your return policy?
We offer a 30-day return policy for all unused items in original packaging.
## How do I track my order?
Log in to your account and visit the Orders page. You'll find tracking information for all shipped orders.
## Do you offer international shipping?
Yes, we ship to over 50 countries. Shipping costs and delivery times vary by destination.`,
});
console.log('Document created:', document.id);
Python
from runwayml import RunwayML
client = RunwayML()
document = client.documents.create(
name='Product FAQ',
content="""# Product FAQ
## What is your return policy?
We offer a 30-day return policy for all unused items in original packaging.
## How do I track my order?
Log in to your account and visit the Orders page.
## Do you offer international shipping?
Yes, we ship to over 50 countries.""",
)
print('Document created:', document.id)
Étape 2 : Lier le Document à un Avatar
Mettez à jour votre Avatar pour rattacher le document. Ceci remplace tout attachement de document existant — passez tous les ID de documents que vous souhaitez lier.
Node.js
await client.avatars.update(avatarId, {
documentIds: [document.id],
});
Python
client.avatars.update(
avatar_id,
document_ids=[document.id],
)
Plusieurs Documents
Vous pouvez lier plusieurs documents à un seul avatar (le total doit rester sous 50 000 tokens) :
const faq = await client.documents.create({
name: 'FAQ',
content: '...',
});
const policies = await client.documents.create({
name: 'Company Policies',
content: '...',
});
await client.avatars.update(avatarId, {
documentIds: [faq.id, policies.id],
});
Étape 3 : Démarrer une Session
Une fois les documents liés, l'Avatar a automatiquement accès à la connaissance lors des conversations. Démarrez une session comme d'habitude — aucune configuration supplémentaire nécessaire :
const session = await client.realtimeSessions.create({
model: 'gwm1_avatars',
avatar: {
type: 'custom',
avatarId: avatarId,
},
});
session = client.realtime_sessions.create(
model='gwm1_avatars',
avatar={
'type': 'custom',
'avatar_id': avatar_id,
},
)
Consultez +rw-integrate-characters pour le flux complet de création de session, polling et WebRTC.
Modèles d'intégration
Charger des Documents à partir de Fichiers
Lisez le contenu de fichiers locaux et créez des documents :
import fs from 'fs';
import RunwayML from '@runwayml/sdk';
const client = new RunwayML();
// Read a local markdown file
const content = fs.readFileSync('./knowledge/product-faq.md', 'utf-8');
const document = await client.documents.create({
name: 'Product FAQ',
content,
});
from pathlib import Path
from runwayml import RunwayML
client = RunwayML()
content = Path('./knowledge/product-faq.md').read_text()
document = client.documents.create(
name='Product FAQ',
content=content,
)
Mises à jour dynamiques de la Connaissance
Mettez à jour les documents par programmation — utile pour la synchronisation avec un CMS ou une base de données :
// Example: API endpoint to update character knowledge
app.post('/api/avatar/update-knowledge', async (req, res) => {
const { avatarId, documents } = req.body;
// Create new documents
const docIds = [];
for (const doc of documents) {
const created = await client.documents.create({
name: doc.name,
content: doc.content,
});
docIds.push(created.id);
}
// Link all documents to the avatar (replaces existing)
await client.avatars.update(avatarId, {
documentIds: docIds,
});
res.json({ success: true, documentCount: docIds.length });
});
Conseils
- Utilisez Markdown pour le contenu structuré — les titres aident l'Avatar à naviguer dans la connaissance.
- Soyez concis — restez bien en dessous de la limite de 50 000 tokens pour une meilleure qualité de récupération.
- Organisez par sujet — plusieurs documents ciblés fonctionnent mieux qu'un seul document géant.
- Mettez à jour régulièrement — gardez la connaissance à jour en recréant les documents quand le contenu change.
- Les documents peuvent aussi être gérés via l'interface du Developer Portal.