Spaces:
Runtime error
Runtime error
File size: 1,376 Bytes
4670a90 |
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 |
from typing import Any, Dict, Optional
from rich import print
from rich.markup import escape
from rich.panel import Panel
from .chains import get_retrieval_qa
def print_answer(text: str) -> None:
print(f"[bright_cyan]{escape(text)}", end="", flush=True)
def chat(config: Dict[str, Any], query: Optional[str] = None) -> None:
qa = get_retrieval_qa(config, callback=print_answer)
interactive = not query
print()
if interactive:
print("Type your query below and press Enter.")
print("Type 'exit' or 'quit' or 'q' to exit the application.\n")
while True:
print("[bold]Q: ", end="", flush=True)
if interactive:
query = input()
else:
print(escape(query))
print()
if query.strip() in ["exit", "quit", "q"]:
print("Exiting...\n")
break
print("[bold]A:", end="", flush=True)
res = qa(query)
if config["llm"] != "ctransformers":
print_answer(res["result"])
print()
for doc in res["source_documents"]:
source, content = doc.metadata["source"], doc.page_content
print(
Panel(
f"[bright_blue]{escape(source)}[/bright_blue]\n\n{escape(content)}"
)
)
print()
if not interactive:
break
|