From f97d731c8299b1c31501c6b596abdde3f42ae7c9 Mon Sep 17 00:00:00 2001 From: Owusu Samuel Blessing Date: Thu, 6 Mar 2025 09:24:46 +0100 Subject: [PATCH] Add files via upload --- app.py | 41 +++++++ docs/UpdateAI_training-company-data.md | 102 +++++++++++++++++ requirements.txt | 7 ++ scripts/__init__.py | 0 scripts/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 171 bytes scripts/__pycache__/rag.cpython-312.pyc | Bin 0 -> 5198 bytes scripts/rag.py | 111 +++++++++++++++++++ 7 files changed, 261 insertions(+) create mode 100644 app.py create mode 100644 docs/UpdateAI_training-company-data.md create mode 100644 requirements.txt create mode 100644 scripts/__init__.py create mode 100644 scripts/__pycache__/__init__.cpython-312.pyc create mode 100644 scripts/__pycache__/rag.cpython-312.pyc create mode 100644 scripts/rag.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..89e6383 --- /dev/null +++ b/app.py @@ -0,0 +1,41 @@ +import faiss +from langchain_community.docstore.in_memory import InMemoryDocstore +from langchain_community.vectorstores import FAISS +from langchain_core.prompts import ChatPromptTemplate +from langchain.chains import create_retrieval_chain +from langchain.chains.combine_documents import create_stuff_documents_chain +from langchain_openai import OpenAIEmbeddings, ChatOpenAI +import openai +from openai import OpenAI +from langchain_community.document_loaders.csv_loader import CSVLoader +from pathlib import Path +from langchain_openai import ChatOpenAI,OpenAIEmbeddings +import os +from dotenv import load_dotenv +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from scripts.rag import get_answer, response_agent +# Load environment variables from a .env file + + +# Initialize FastAPI app +app = FastAPI() + +# Define a request model +class QuestionRequest(BaseModel): + question: str + +@app.post("/ask") +def ask_question(request: QuestionRequest): + try: + # Use the RAG system to get the answer + calculation_data = get_answer(rag_chain, request.question) + final_response = response_agent(request.question, calculation_data) + return {"answer": final_response} + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=5079) \ No newline at end of file diff --git a/docs/UpdateAI_training-company-data.md b/docs/UpdateAI_training-company-data.md new file mode 100644 index 0000000..e874f8c --- /dev/null +++ b/docs/UpdateAI_training-company-data.md @@ -0,0 +1,102 @@ +| Company Name | Investment Date | Investment Amount | Ownership % | Valuation | Current Revenue | ARR | MRR | Burn Rate | Runway (Months) | Next Funding | +|-------------|----------------|------------------|------------|-----------|----------------|-----|-----|-----------|-----------------|-------------| +| NexTech Solutions | 2023-08-15 | $2,500,000 | 18% | $15,000,000 | $1,800,000 | $2,100,000 | $175,000 | $280,000 | 9 | 2025-06 | +| Quantum Dynamics | 2024-01-23 | $5,000,000 | 22% | $28,000,000 | $3,200,000 | $3,600,000 | $300,000 | $450,000 | 11 | 2025-11 | +| BlueWave Analytics | 2023-11-10 | $1,750,000 | 15% | $12,500,000 | $1,450,000 | $1,800,000 | $150,000 | $210,000 | 8 | 2025-04 | +| Helios Energy Systems | 2024-02-05 | $8,500,000 | 25% | $38,000,000 | $4,200,000 | $4,800,000 | $400,000 | $650,000 | 13 | 2026-01 | +| OptiMind Technologies | 2023-06-30 | $3,200,000 | 20% | $17,500,000 | $2,100,000 | $2,400,000 | $200,000 | $320,000 | 10 | 2025-03 | +| Verdant Robotics | 2024-04-12 | $12,000,000 | 30% | $45,000,000 | $5,400,000 | $6,000,000 | $500,000 | $750,000 | 16 | 2026-06 | +| Pulse Medical Devices | 2023-09-18 | $4,800,000 | 24% | $22,000,000 | $2,600,000 | $3,000,000 | $250,000 | $380,000 | 13 | 2025-08 | +| Solstice AI | 2024-03-21 | $7,500,000 | 28% | $32,000,000 | $3,800,000 | $4,200,000 | $350,000 | $520,000 | 14 | 2025-12 | +| FusionWorks | 2023-07-25 | $2,100,000 | 16% | $14,000,000 | $1,650,000 | $1,920,000 | $160,000 | $240,000 | 9 | 2025-05 | +| Nimbus Security | 2024-02-18 | $6,300,000 | 26% | $27,000,000 | $3,100,000 | $3,480,000 | $290,000 | $420,000 | 15 | 2026-02 | +| Apex Logistics | 2023-10-05 | $3,800,000 | 21% | $19,500,000 | $2,300,000 | $2,640,000 | $220,000 | $350,000 | 11 | 2025-07 | +| Lunar Pharmaceuticals | 2024-01-07 | $9,500,000 | 32% | $35,000,000 | $4,000,000 | $4,560,000 | $380,000 | $580,000 | 16 | 2025-10 | +| Zenith Aerospace | 2023-05-15 | $4,200,000 | 23% | $20,000,000 | $2,400,000 | $2,760,000 | $230,000 | $360,000 | 12 | 2025-01 | +| Cobalt Cybersecurity | 2024-03-03 | $5,600,000 | 25% | $24,500,000 | $2,900,000 | $3,240,000 | $270,000 | $400,000 | 14 | 2025-11 | +| EchoStream Media | 2023-08-28 | $1,900,000 | 17% | $12,000,000 | $1,400,000 | $1,680,000 | $140,000 | $220,000 | 9 | 2025-06 | +| Prism Biotechnology | 2024-02-22 | $10,800,000 | 29% | $42,000,000 | $4,800,000 | $5,400,000 | $450,000 | $680,000 | 16 | 2026-03 | +| Vector Financial | 2023-11-30 | $3,500,000 | 19% | $19,000,000 | $2,200,000 | $2,520,000 | $210,000 | $330,000 | 11 | 2025-08 | +| Aurora Renewables | 2024-04-15 | $7,200,000 | 27% | $30,000,000 | $3,500,000 | $3,960,000 | $330,000 | $490,000 | 15 | 2026-05 | +| Titan Manufacturing | 2023-07-03 | $2,800,000 | 18% | $16,500,000 | $1,950,000 | $2,280,000 | $190,000 | $290,000 | 10 | 2025-04 | +| Orchid Health Systems | 2024-01-18 | $6,500,000 | 26% | $28,500,000 | $3,300,000 | $3,720,000 | $310,000 | $460,000 | 14 | 2025-12 | +| Nebula Computing | 2023-09-10 | $4,000,000 | 22% | $20,000,000 | $2,400,000 | $2,760,000 | $230,000 | $350,000 | 11 | 2025-07 | +| Ember Food Tech | 2024-03-05 | $5,400,000 | 24% | $24,000,000 | $2,800,000 | $3,120,000 | $260,000 | $390,000 | 14 | 2026-01 | +| Crest Telecom | 2023-06-20 | $3,000,000 | 19% | $17,000,000 | $2,000,000 | $2,280,000 | $190,000 | $300,000 | 10 | 2025-03 | +| Phoenix Nanotechnology | 2024-02-12 | $11,500,000 | 31% | $43,000,000 | $5,000,000 | $5,640,000 | $470,000 | $700,000 | 16 | 2026-04 | +| Meridian AgriTech | 2023-10-25 | $2,400,000 | 17% | $15,000,000 | $1,800,000 | $2,040,000 | $170,000 | $260,000 | 9 | 2025-06 | +| Polaris Virtual Reality | 2024-04-03 | $8,800,000 | 28% | $36,000,000 | $4,200,000 | $4,800,000 | $400,000 | $600,000 | 15 | 2026-05 | +| Zephyr Mobility | 2023-08-05 | $3,200,000 | 20% | $17,500,000 | $2,100,000 | $2,400,000 | $200,000 | $320,000 | 10 | 2025-05 | +| Elysium Genomics | 2024-01-30 | $6,800,000 | 26% | $29,000,000 | $3,400,000 | $3,840,000 | $320,000 | $480,000 | 14 | 2026-02 | +| Cascade Water Solutions | 2023-11-12 | $2,300,000 | 16% | $15,500,000 | $1,850,000 | $2,160,000 | $180,000 | $270,000 | 9 | 2025-07 | +| Atlas Construction Tech | 2024-03-18 | $5,900,000 | 25% | $26,000,000 | $3,000,000 | $3,360,000 | $280,000 | $420,000 | 14 | 2026-01 | +| Horizon EdTech | 2023-05-28 | $1,800,000 | 15% | $13,000,000 | $1,500,000 | $1,740,000 | $145,000 | $230,000 | 8 | 2025-02 | +| Orion Space Systems | 2024-02-25 | $9,200,000 | 30% | $37,000,000 | $4,300,000 | $4,920,000 | $410,000 | $620,000 | 15 | 2026-03 | +| GreenLeaf Sustainable | 2023-09-08 | $2,700,000 | 18% | $16,000,000 | $1,900,000 | $2,160,000 | $180,000 | $280,000 | 10 | 2025-06 | +| Nova Quantum Computing | 2024-04-20 | $11,000,000 | 32% | $40,000,000 | $4,600,000 | $5,280,000 | $440,000 | $660,000 | 17 | 2026-07 | +| Vortex AI | 2023-07-15 | $4,500,000 | 23% | $21,000,000 | $2,500,000 | $2,880,000 | $240,000 | $360,000 | 13 | 2025-05 | +| Radiant MedTech | 2024-01-04 | $7,000,000 | 27% | $30,000,000 | $3,500,000 | $3,960,000 | $330,000 | $500,000 | 14 | 2025-12 | +| Sapphire Analytics | 2023-10-10 | $3,600,000 | 21% | $18,500,000 | $2,200,000 | $2,520,000 | $210,000 | $330,000 | 11 | 2025-08 | +| Fusion Electric Vehicles | 2024-03-08 | $9,800,000 | 29% | $38,000,000 | $4,400,000 | $5,040,000 | $420,000 | $630,000 | 16 | 2026-04 | +| Sigma Automation | 2023-06-05 | $2,900,000 | 19% | $16,500,000 | $1,950,000 | $2,280,000 | $190,000 | $290,000 | 10 | 2025-03 | +| Eclipse Software | 2024-02-15 | $6,200,000 | 25% | $27,500,000 | $3,200,000 | $3,600,000 | $300,000 | $450,000 | 14 | 2026-01 | +| Tidal Wave Entertainment | 2023-08-22 | $2,000,000 | 16% | $13,500,000 | $1,600,000 | $1,860,000 | $155,000 | $250,000 | 8 | 2025-05 | +| Helix Biotech | 2024-04-05 | $8,000,000 | 28% | $33,000,000 | $3,800,000 | $4,320,000 | $360,000 | $540,000 | 15 | 2026-05 | +| Magna Hospitality Tech | 2023-11-05 | $3,300,000 | 20% | $18,000,000 | $2,100,000 | $2,400,000 | $200,000 | $310,000 | 11 | 2025-08 | +| Pinnacle Aerospace | 2024-01-25 | $10,500,000 | 31% | $39,000,000 | $4,500,000 | $5,160,000 | $430,000 | $640,000 | 16 | 2026-02 | +| Equinox Renewable Energy | 2023-05-10 | $4,100,000 | 22% | $20,500,000 | $2,400,000 | $2,760,000 | $230,000 | $350,000 | 12 | 2025-02 | +| Sentinel Cybersecurity | 2024-03-12 | $6,600,000 | 26% | $28,000,000 | $3,300,000 | $3,720,000 | $310,000 | $460,000 | 14 | 2026-01 | +| Cedar Healthcare Systems | 2023-09-28 | $2,600,000 | 18% | $15,500,000 | $1,850,000 | $2,160,000 | $180,000 | $270,000 | 10 | 2025-07 | +| Infinity Blockchain | 2024-02-28 | $7,800,000 | 27% | $32,000,000 | $3,700,000 | $4,200,000 | $350,000 | $520,000 | 15 | 2026-03 | +| Lumina Digital Media | 2023-07-20 | $3,400,000 | 20% | $18,500,000 | $2,200,000 | $2,520,000 | $210,000 | $320,000 | 11 | 2025-05 | +| Hyperion Logistics | 2024-04-18 | $5,500,000 | 24% | $25,000,000 | $2,900,000 | $3,360,000 | $280,000 | $420,000 | 13 | 2026-04 | +| Vertex Pharmaceuticals | 2023-10-15 | $9,000,000 | 29% | $35,000,000 | $4,100,000 | $4,680,000 | $390,000 | $580,000 | 16 | 2025-09 | +| Quasar Communications | 2024-01-15 | $4,700,000 | 23% | $22,500,000 | $2,600,000 | $3,000,000 | $250,000 | $380,000 | 12 | 2025-11 | +| Olympus Manufacturing | 2023-12-05 | $2,200,000 | 17% | $14,000,000 | $1,650,000 | $1,920,000 | $160,000 | $250,000 | 9 | 2025-09 | +| Starlight IoT Solutions | 2024-03-25 | $6,700,000 | 26% | $29,000,000 | $3,400,000 | $3,840,000 | $320,000 | $480,000 | 14 | 2026-03 | +| Terraforma AgriTech | 2023-06-12 | $3,700,000 | 21% | $19,000,000 | $2,250,000 | $2,580,000 | $215,000 | $330,000 | 11 | 2025-04 | +| Chronos AI | 2024-02-08 | $11,200,000 | 32% | $41,000,000 | $4,700,000 | $5,400,000 | $450,000 | $670,000 | 17 | 2026-04 | +| Oceanic Research | 2023-08-18 | $4,400,000 | 23% | $21,000,000 | $2,500,000 | $2,880,000 | $240,000 | $360,000 | 12 | 2025-06 | +| Nexus Robotics | 2024-04-22 | $8,300,000 | 28% | $34,000,000 | $3,900,000 | $4,440,000 | $370,000 | $550,000 | 15 | 2026-06 | +| Crystal Clear Water | 2023-11-18 | $2,500,000 | 18% | $15,000,000 | $1,800,000 | $2,040,000 | $170,000 | $260,000 | 10 | 2025-08 | +| Fusion Network Security | 2024-01-11 | $5,700,000 | 25% | $25,500,000 | $3,000,000 | $3,360,000 | $280,000 | $420,000 | 14 | 2025-12 | +| Borealis AR/VR | 2023-05-20 | $3,900,000 | 22% | $19,500,000 | $2,300,000 | $2,640,000 | $220,000 | $340,000 | 11 | 2025-02 | +| Eclipse Energy Storage | 2024-03-15 | $9,500,000 | 30% | $37,000,000 | $4,300,000 | $4,920,000 | $410,000 | $610,000 | 16 | 2026-03 | +| Catalyst BioSystems | 2023-09-20 | $4,900,000 | 24% | $22,500,000 | $2,650,000 | $3,000,000 | $250,000 | $380,000 | 13 | 2025-07 | +| Paradigm Software | 2024-02-20 | $6,900,000 | 26% | $29,500,000 | $3,450,000 | $3,900,000 | $325,000 | $490,000 | 14 | 2026-02 | +| Aether Cloud Services | 2023-07-28 | $3,500,000 | 20% | $18,500,000 | $2,200,000 | $2,520,000 | $210,000 | $330,000 | 11 | 2025-05 | +| Celestial Aerospace | 2024-04-10 | $10,200,000 | 31% | $38,500,000 | $4,450,000 | $5,100,000 | $425,000 | $630,000 | 16 | 2026-06 | +| Resonance Audio | 2023-10-20 | $2,100,000 | 16% | $14,000,000 | $1,650,000 | $1,920,000 | $160,000 | $240,000 | 9 | 2025-07 | +| Axiom MedTech | 2024-01-20 | $8,200,000 | 28% | $33,500,000 | $3,850,000 | $4,440,000 | $370,000 | $550,000 | 15 | 2026-01 | +| Cascade Software | 2023-12-10 | $3,800,000 | 21% | $19,500,000 | $2,300,000 | $2,640,000 | $220,000 | $340,000 | 11 | 2025-09 | +| Momentum Electric | 2024-03-28 | $7,300,000 | 27% | $31,000,000 | $3,600,000 | $4,080,000 | $340,000 | $510,000 | 14 | 2026-04 | +| Velvet Hospitality | 2023-06-25 | $2,800,000 | 18% | $16,500,000 | $1,950,000 | $2,280,000 | $190,000 | $280,000 | 10 | 2025-04 | +| Paragon AI | 2024-02-10 | $11,800,000 | 32% | $42,500,000 | $4,900,000 | $5,640,000 | $470,000 | $700,000 | 17 | 2026-04 | +| Emerald Renewables | 2023-08-10 | $4,600,000 | 23% | $22,000,000 | $2,550,000 | $3,000,000 | $250,000 | $370,000 | 12 | 2025-06 | +| Pantheon Blockchain | 2024-04-25 | $6,400,000 | 25% | $28,000,000 | $3,250,000 | $3,720,000 | $310,000 | $460,000 | 14 | 2026-05 | +| Quantum Agriculture | 2023-11-25 | $3,100,000 | 19% | $17,500,000 | $2,050,000 | $2,400,000 | $200,000 | $300,000 | 10 | 2025-09 | +| Solaris Energy | 2024-01-08 | $8,700,000 | 29% | $34,500,000 | $4,000,000 | $4,560,000 | $380,000 | $570,000 | 15 | 2025-12 | +| Argon Security | 2023-05-05 | $4,300,000 | 22% | $21,000,000 | $2,450,000 | $2,820,000 | $235,000 | $360,000 | 12 | 2025-01 | +| Zenith Data Systems | 2024-03-10 | $7,400,000 | 27% | $31,500,000 | $3,650,000 | $4,200,000 | $350,000 | $520,000 | 14 | 2026-02 | +| Lumen Biotech | 2023-09-15 | $5,100,000 | 24% | $23,000,000 | $2,700,000 | $3,120,000 | $260,000 | $390,000 | 13 | 2025-07 | +| Aurora MedSystems | 2024-02-17 | $9,600,000 | 30% | $37,500,000 | $4,350,000 | $4,980,000 | $415,000 | $620,000 | 16 | 2026-03 | +| Cerulean Water Tech | 2023-07-10 | $3,600,000 | 20% | $19,000,000 | $2,250,000 | $2,580,000 | $215,000 | $330,000 | 11 | 2025-04 | +| Nebula Space Tech | 2024-04-08 | $10,800,000 | 31% | $40,000,000 | $4,600,000 | $5,280,000 | $440,000 | $660,000 | 16 | 2026-06 | +| Meridian Networks | 2023-10-28 | $2,400,000 | 17% | $15,000,000 | $1,750,000 | $2,040,000 | $170,000 | $260,000 | 9 | 2025-08 | +| Vertex IoT | 2024-01-13 | $5,800,000 | 25% | $26,000,000 | $3,050,000 | $3,480,000 | $290,000 | $430,000 | 14 | 2025-12 | +| Equinox Logistics | 2023-12-15 | $4,000,000 | 22% | $20,000,000 | $2,350,000 | $2,700,000 | $225,000 | $350,000 | 11 | 2025-10 | +| Pulse Digital Health | 2024-03-30 | $6,000,000 | 25% | $26,500,000 | $3,100,000 | $3,540,000 | $295,000 | $440,000 | 14 | 2026-03 | +| Sapphire Technologies | 2023-06-15 | $3,000,000 | 19% | $17,000,000 | $2,000,000 | $2,280,000 | $190,000 | $300,000 | 10 | 2025-03 | +| Onyx Cybersecurity | 2024-02-02 | $7,600,000 | 27% | $32,000,000 | $3,700,000 | $4,260,000 | $355,000 | $530,000 | 14 | 2026-02 | +| Ember Renewable Energy | 2023-08-25 | $4,800,000 | 24% | $22,500,000 | $2,600,000 | $3,000,000 | $250,000 | $380,000 | 13 | 2025-06 | +| Titan Manufacturing Tech | 2024-04-28 | $8,900,000 | 29% | $35,500,000 | $4,100,000 | $4,740,000 | $395,000 | $590,000 | 15 | 2026-07 | +| Oceanic DataSystems | 2023-11-20 | $3,300,000 | 20% | $18,000,000 | $2,100,000 | $2,460,000 | $205,000 | $310,000 | 11 | 2025-09 | +| Phoenix Quantum | 2024-01-05 | $12,500,000 | 33% | $44,000,000 | $5,100,000 | $5,880,000 | $490,000 | $730,000 | 17 | 2026-01 | +| Eclipse Healthcare | 2023-05-25 | $4,500,000 | 23% | $21,500,000 | $2,500,000 | $2,880,000 | $240,000 | $370,000 | 12 | 2025-02 | +| Orion Telecom | 2024-03-20 | $6,100,000 | 25% | $27,000,000 | $3,150,000 | $3,600,000 | $300,000 | $450,000 | 14 | 2026-02 | +| Nova Pharmaceuticals | 2023-09-25 | $5,300,000 | 24% | $24,000,000 | $2,800,000 | $3,240,000 | $270,000 | $400,000 | 13 | 2025-08 | +| Polaris Aerospace | 2024-02-27 | $9,900,000 | 30% | $38,000,000 | $4,400,000 | $5,040,000 | $420,000 | $630,000 | 16 | 2026-03 | +| Crest Software | 2023-07-05 | $3,700,000 | 21% | $19,000,000 | $2,250,000 | $2,580,000 | $215,000 | $330,000 | 11 | 2025-04 | +| Fusion Robotics | 2024-04-15 | $8,500,000 | 28% | $34,000,000 | $3,950,000 | $4,500,000 | $375,000 | $560,000 | 15 | 2026-05 | +| Solstice Analytics | 2023-10-18 | $2,600,000 | 18% | $15,500,000 | $1,800,000 | $2,100,000 | $175,000 | $270,000 | 10 | 2025-07 | +| Radiant Health Tech | 2024-01-28 | $7,900,000 | 28% | $32,500,000 | $3,800,000 | $4,320,000 | $360,000 | $540,000 | 15 | 2026-02 | diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e36eb48 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +langchain-community +langchain_openai +openai +fastapi +uvicorn +faiss-cpu +python-dotenv \ No newline at end of file diff --git a/scripts/__init__.py b/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scripts/__pycache__/__init__.cpython-312.pyc b/scripts/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07c0157481e4f1020be736538c22ff638fc5d553 GIT binary patch literal 171 zcmX@j%ge<81V4_PNC(l6K?FMZ%mNgd&QQsq$>_I|p@<2{`wUX^%S%7BIJKx)KQ}Qs zDL+43-zBv;yClCrKPe}*xHvN}Jw7p0KQ}u?KczUnv>+w1BsIRcBr!Q#zc{%lv!J9{ sKR!M)FS8^*Uaz3?7Kcr4eoARhs$CH)&}c>=E(S3^GBYwV7BK@^06!KjNB{r; literal 0 HcmV?d00001 diff --git a/scripts/__pycache__/rag.cpython-312.pyc b/scripts/__pycache__/rag.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..444cbc940d3bde9a50b5b47677228e56cae47b1f GIT binary patch literal 5198 zcmZ`-O>7&-6`tiT|9>S>ifH|KEhm;~TV!pgspB|JBw2Fg|N1AbdB|eT9ZD

Plr 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 q&okN8%>J6x10p-l3M*5er{s?_cgAZ6$5&Iw-