agentscope-ai/agentscope · error · KnowledgeBaseNotFoundError

Credential {record.data.embedding_model_config.credential_id

Error message

Credential {record.data.embedding_model_config.credential_id!r} for knowledge base {knowledge_base_id!r} not found.

What it means

After a knowledge base record is found, get_knowledge loads the embedding model credential referenced by record.data.embedding_model_config.credential_id. If that credential was deleted (or never existed), it also raises KnowledgeBaseNotFoundError — deliberately reusing the 'KB not found' type so a dangling credential renders the KB unresolvable rather than failing later at model-build time.

Source

Thrown at src/agentscope/app/rag/knowledge_base_manager/_collection_per_kb.py:197

            user_id,
            knowledge_base_id,
        )
        if record is None:
            raise KnowledgeBaseNotFoundError(
                f"Knowledge base {knowledge_base_id!r} not found.",
            )

        # KB manager is an owner-internal path: the credential lives
        # under the same owner as the knowledge base, so we read it
        # directly from storage rather than routing through the access
        # service (which is only relevant when the viewer differs from
        # the owner).
        credential_record = await self._storage.get_credential(
            record.user_id,
            record.data.embedding_model_config.credential_id,
        )
        if credential_record is None:
            raise KnowledgeBaseNotFoundError(
                f"Credential "
                f"{record.data.embedding_model_config.credential_id!r} for "
                f"knowledge base {knowledge_base_id!r} not found.",
            )
        embedding_model = build_embedding_model(
            credential_record=credential_record,
            config=record.data.embedding_model_config,
        )
        return KnowledgeBase(
            name=record.data.name,
            description=record.data.description,
            embedding_model=embedding_model,
            vector_store=self._vector_store,
            collection=record.data.collection_name,
            metadata_filter=None,
        )

View on GitHub (pinned to e90f1c7592)

Solutions

  1. Re-create or re-link the credential and update the KB's embedding_model_config.credential_id
  2. Audit for orphaned credential references: iterate KBs and verify each credential_id resolves
  3. When rotating credentials, upsert the new one and repoint KBs before deleting the old
  4. Surface this to users as 'knowledge base is misconfigured — reconnect your embedding provider'

Example fix

# before
kb = await manager.get_knowledge(user_id, kb_id)
# KnowledgeBaseNotFoundError: Credential '...' for knowledge base ... not found.

# after
# repair: re-point the KB at a valid credential, then
kb = await manager.get_knowledge(user_id, kb_id)
Defensive patterns

Strategy: try-catch

Validate before calling

record = await storage.get_knowledge_base(user_id, kb_id)
cred = await storage.get_credential(user_id, record.data.embedding_model_config.credential_id)
if cred is None:
    raise RuntimeError(f'KB {kb_id} references missing credential; repair config')

Type guard

null

Try / catch

from agentscope.app.rag import KnowledgeBaseNotFoundError
try:
    kb = await manager.get_knowledge(user_id, kb_id)
except KnowledgeBaseNotFoundError as e:
    if 'Credential' in str(e):
        ...  # KB config is broken: re-link credential
    else:
        ...  # KB genuinely missing

Prevention

When it happens

Trigger: Calling manager.get_knowledge for a KB whose embedding credential_id points to a deleted/rotated credential record in storage; common after credential rotation scripts or manual DB cleanup that orphaned KB configs.

Common situations: Credential rotation that deletes old entries while KBs still reference them; tenant data imported without credentials; admin deleting API keys from a console without checking dependent KBs; user_id mismatch when reading the credential.

Related errors


AI-assisted analysis of agentscope-ai/agentscope@e90f1c7592 (2026-08-28). Data as JSON: /api/errors/de7edfedcaf971b8. Report an issue: GitHub.