| """ |
| Launch Component 8 local chat interface. |
| """ |
|
|
| from __future__ import annotations |
|
|
| import argparse |
| import sys |
| from pathlib import Path |
|
|
| import yaml |
|
|
| |
| PROJECT_ROOT = Path(__file__).resolve().parents[1] |
| if str(PROJECT_ROOT) not in sys.path: |
| sys.path.insert(0, str(PROJECT_ROOT)) |
|
|
| from src.chat_interface.gradio_chat_app import create_demo |
|
|
|
|
| def parse_args() -> argparse.Namespace: |
| parser = argparse.ArgumentParser(description="Launch Component 8 chat UI.") |
| parser.add_argument("--config", default="configs/component8_chat_config.yaml") |
| return parser.parse_args() |
|
|
|
|
| def main() -> None: |
| args = parse_args() |
| cfg_path = Path(args.config) |
| if not cfg_path.exists(): |
| raise FileNotFoundError(f"Config not found: {cfg_path}") |
|
|
| cfg = yaml.safe_load(cfg_path.read_text(encoding="utf-8")) |
| host = str(cfg.get("server", {}).get("host", "127.0.0.1")) |
| port = int(cfg.get("server", {}).get("port", 7860)) |
| share = bool(cfg.get("server", {}).get("share", False)) |
|
|
| demo = create_demo(config_path=args.config) |
| demo.queue(default_concurrency_limit=1) |
| demo.launch(server_name=host, server_port=port, share=share, inbrowser=False) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|