gabykim's picture
gradio chat entrypoint moved to cli
ee1878f
raw
history blame
1.51 kB
"""Command implementation for the chat interface."""
import chromadb
from knowlang.chat_bot.chat_interface import create_chatbot
from knowlang.configs.config import AppConfig
from knowlang.cli.types import ChatCommandArgs
from knowlang.utils.fancy_log import FancyLogger
LOG = FancyLogger(__name__)
def create_config(args: ChatCommandArgs) -> AppConfig:
"""Create configuration from file or defaults."""
if args.config:
with open(args.config, 'r') as file:
config_data = file.read()
return AppConfig.model_validate_json(config_data)
return AppConfig()
async def chat_command(args: ChatCommandArgs) -> None:
"""Execute the chat command.
Args:
args: Typed command line arguments
"""
config = create_config(args)
# Verify database exists
try:
db_client = chromadb.PersistentClient(path=str(config.db.persist_directory))
db_client.get_collection(name=config.db.collection_name)
except Exception as e:
LOG.error(
"Database not found. Please run 'knowlang parse' first to index your codebase."
f"\nError: {str(e)}"
)
return
# Create and launch chatbot
demo = create_chatbot(config)
launch_kwargs = {
"server_port": args.server_port,
"server_name": args.server_name or "127.0.0.1",
"share": args.share,
}
if args.port:
launch_kwargs["port"] = args.port
demo.launch(**launch_kwargs)