Spaces:
Runtime error
Runtime error
File size: 2,213 Bytes
32688bc 9d9413b ba4d8ff 9294707 ba4d8ff b2d2f75 32688bc b2d2f75 ba4d8ff b2d2f75 ba4d8ff 6cf4770 b2d2f75 9d9413b b2d2f75 9d9413b |
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
from fastapi import FastAPI, Request, Header
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
import os, uuid
from memory import MemoryVectorStore
from auth import authorize
from session import init_session_db, create_session, log_interaction, get_session_logs
import gradio as gr
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
model = SentenceTransformer('all-MiniLM-L6-v2')
index = faiss.IndexFlatL2(384)
memory_text = []
def autonomous_agent(input_text):
vec = model.encode([input_text])
index.add(vec)
memory_text.append(input_text)
if index.ntotal > 1:
D, I = index.search(vec, k=2)
related = memory_text[I[0][1]]
response = f"🧠 Memory Match: {related}\n🤖 Working on: {input_text}"
else:
response = f"🤖 Received: {input_text}\n🧠 No prior memory yet."
return response
ui = gr.Interface(fn=autonomous_agent, inputs="text", outputs="text", title="Autonomous AI Agent", description="Self-enhancing chatbot with vector memory.")
ui.launch(share=False, inbrowser=False)
app = FastAPI()
memory = MemoryVectorStore()
init_session_db()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"]
)
@app.get("/", response_class=HTMLResponse)
async def root():
return open("static/index.html").read()
@app.post("/session_task")
async def session_task(request: Request, x_api_key: str = Header(...)):
data = await request.json()
goal = data.get("goal", "")
user = authorize(x_api_key)
if not user:
return {"error": "Unauthorized"}
session_id = data.get("session_id", create_session(user))
memory.add(goal)
ideas = memory.search(goal)
result = f"[Goal]: {goal}\n[Related]: {ideas}\n[Response]: 🚧 working on it..."
memory.add(result)
log_interaction(session_id, goal, result)
return {"session_id": session_id, "output": result}
@app.get("/session_logs/{sid}")
def logs(sid: str):
return get_session_logs(sid)
app.mount("/static", StaticFiles(directory="static"), name="static")
|