packages/python-packages/apiview-copilot/scripts/search_kb.py (36 lines of code) (raw):
import json
import os
import sys
from typing import Optional, List
# Add project root to sys.path
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from src._search_manager import SearchManager
from cli import CustomJSONEncoder
def search_knowledge_base(
query: str,
language: str,
):
"""
Queries the Search indexes and returns the resulting Cosmos DB
objects, resolving all links between objects. This result represents
what the AI reviewer would receive as context in RAG mode.
"""
search = SearchManager(language=language)
if path:
with open(path, "r") as f:
query = f.read()
examples = search.search_examples(query=query)
guidelines = search.search_guidelines(query=query)
context = search.build_context(guidelines, examples)
return context
if __name__ == "__main__":
# extract the path and language from the command line arguments
if len(sys.argv) < 3:
print("Usage: python search_kb.py <path_or_query> <language> [<use_markdown>]")
sys.exit(1)
path = sys.argv[1]
language = sys.argv[2]
use_markdown = bool(sys.argv[3]) if len(sys.argv) > 3 else None
# check if path is a file or string
if os.path.isfile(path):
with open(path, "r", encoding="utf-8") as file:
query = file.read()
else:
query = path
results = search_knowledge_base(query, language)
if use_markdown:
print(results.to_markdown())
else:
print(json.dumps(results, indent=2, cls=CustomJSONEncoder))