46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
import argparse
|
|
import os
|
|
from src.graph import build_graph
|
|
from src.state import CompareState
|
|
|
|
def parse_entities(arg: str) -> list[str]:
|
|
return [e.strip() for e in arg.split(",") if e.strip()]
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Research Brief Generator")
|
|
parser.add_argument(
|
|
"-e",
|
|
"--entities",
|
|
type=str,
|
|
help="Comma-separated list of 3 entities to compare",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
if args.entities:
|
|
entities = parse_entities(args.entities)
|
|
if len(entities) != 3:
|
|
print("Please provide exactly 3 entities.")
|
|
return
|
|
else:
|
|
# Default entities
|
|
entities = ["Chroma", "FAISS", "Qdrant"]
|
|
|
|
# Initial state
|
|
state: CompareState = {
|
|
"entities": entities,
|
|
"criteria": [],
|
|
"findings": {},
|
|
"final_brief": None,
|
|
"verdict": None,
|
|
}
|
|
|
|
graph = build_graph()
|
|
final_state = graph.invoke(state)
|
|
|
|
print("\n=== Research Brief ===\n")
|
|
print(final_state["final_brief"])
|
|
print("\n=== Verdict ===\n")
|
|
print(final_state["verdict"])
|
|
|
|
if __name__ == "__main__":
|
|
main() |