-
Notifications
You must be signed in to change notification settings - Fork 533
Expand file tree
/
Copy pathknowledge_base.py
More file actions
65 lines (55 loc) · 2.29 KB
/
Copy pathknowledge_base.py
File metadata and controls
65 lines (55 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import logging
from typing import List
from app.utils import get_bedrock_agent_client
from app.repositories.models.custom_bot_kb import (
BedrockAgentGetKnowledgeBaseResponse,
KnowledgeBase,
KnowledgeBaseConfiguration,
)
from app.routes.schemas.knowledge_base import KnowledgeBaseListItem
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
def get_knowledge_base_info(
knowledge_base_id: str | None,
) -> BedrockAgentGetKnowledgeBaseResponse:
client = get_bedrock_agent_client()
try:
response = client.get_knowledge_base(knowledgeBaseId=knowledge_base_id)
return BedrockAgentGetKnowledgeBaseResponse(
knowledge_base=KnowledgeBase(
knowledge_base_configuration=KnowledgeBaseConfiguration(
type=response.get("knowledgeBase", {})
.get("knowledgeBaseConfiguration", {})
.get("type", "VECTOR")
)
)
)
except Exception as e:
logger.error(f"Failed to get knowledge base info: {e}")
return BedrockAgentGetKnowledgeBaseResponse(
knowledge_base=KnowledgeBase(
knowledge_base_configuration=KnowledgeBaseConfiguration(type="VECTOR")
)
)
def list_knowledge_bases() -> List[KnowledgeBaseListItem]:
"""List all available knowledge bases in the account."""
client = get_bedrock_agent_client()
knowledge_bases: List[KnowledgeBaseListItem] = []
try:
paginator = client.get_paginator("list_knowledge_bases")
page_iterator = paginator.paginate()
for page in page_iterator:
for kb in page.get("knowledgeBaseSummaries", []):
knowledge_bases.append(
KnowledgeBaseListItem(
knowledge_base_id=kb.get("knowledgeBaseId", ""),
name=kb.get("name", ""),
description=kb.get("description"),
status=kb.get("status", "UNKNOWN"),
)
)
logger.info(f"Found {len(knowledge_bases)} knowledge bases")
return knowledge_bases
except Exception as e:
logger.error(f"Failed to list knowledge bases: {e}")
return []