import os import json import pandas as pd from phi.agent import Agent from phi.model.openai import OpenAIChat from phi.embedder.openai import OpenAIEmbedder from phi.vectordb.lancedb import LanceDb, SearchType from phi.knowledge.json import JSONKnowledgeBase from dotenv import load_dotenv # Load environment variables load_dotenv() # Paths BNI_CSV_FILE = "bni_pearl_chapter.csv" BNI_JSON_FILE = "bni_pearl_chapter.json" # Convert CSV to JSON if JSON doesn't exist def convert_csv_to_json(): if not os.path.exists(BNI_CSV_FILE): raise FileNotFoundError(f"❌ Error: {BNI_CSV_FILE} is missing.") df = pd.read_csv(BNI_CSV_FILE) if df.empty: raise ValueError(f"❌ Error: {BNI_CSV_FILE} is empty!") json_data = df.to_dict(orient="records") with open(BNI_JSON_FILE, "w") as file: json.dump(json_data, file, indent=4) print(f"✅ Converted {BNI_CSV_FILE} to JSON format.") if not os.path.exists(BNI_JSON_FILE): convert_csv_to_json() # Initialize LanceDb (vector DB) vector_db = LanceDb( table_name="bni_pearl", uri="tmp/lancedb", search_type=SearchType.vector, embedder=OpenAIEmbedder(model="text-embedding-3-small"), ) # Initialize JSON Knowledge Base knowledge_base = JSONKnowledgeBase( path=BNI_JSON_FILE, # Important: `path` instead of `file_path` vector_db=vector_db ) # Load the knowledge base knowledge_base.load() # Initialize the RAG Agent rag_agent = Agent( model=OpenAIChat(model="gpt-4o"), knowledge=knowledge_base, show_tool_calls=True, markdown=True, ) # Define Function to Recommend BNI Members def recommend_bni_connections(company_data: str) -> str: query = f""" Given the following business details: - **Company Information:** {company_data} Recommend **5-6 members** from the BNI Pearl Chapter who can help this business through referrals, networking, or industry connections. Provide: 1. **Member Name** 2. **Company & Industry** 3. **How They Can Help** """ response = rag_agent.run(query) return response.content