File size: 1,710 Bytes
e370f3a d1406e8 51ce63b d1406e8 270b445 efbfb8b bb68426 ad421bc 270b445 51ce63b 270b445 efbfb8b e370f3a ad421bc 51ce63b ad421bc 270b445 a4b560c bb68426 ad421bc e370f3a 0527279 ad421bc 0527279 ad421bc 0527279 ad421bc e370f3a efa5f27 51ce63b bb68426 a4b560c 51ce63b a4b560c 270b445 e370f3a 51ce63b e370f3a ad421bc e370f3a ad421bc |
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 |
import gradio as gr
import requests
import os
import faiss
import numpy as np
import json
from sentence_transformers import SentenceTransformer
# β
Load context data
with open("texts.json", "r", encoding="utf-8") as f:
texts = json.load(f)
index = faiss.read_index("faiss_index.bin")
embed_model = SentenceTransformer("all-MiniLM-L6-v2")
API_KEY = os.environ.get("OPENROUTER_API_KEY")
MODEL = "qwen/qwen-2.5-coder-32b-instruct:free"
# β
RAG context retriever
def get_context(query, top_k=5):
query_vec = embed_model.encode([query])
D, I = index.search(np.array(query_vec), top_k)
return "\n".join([texts[i] for i in I[0]])
# β
Chat handler
def chat_fn(message, history):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
context = get_context(message)
messages = [
{"role": "system", "content": f"You are a helpful assistant. ONLY use the context below to answer:\n\n{context}"}
]
for user, assistant in history:
messages.append({"role": "user", "content": user})
messages.append({"role": "assistant", "content": assistant})
messages.append({"role": "user", "content": message})
payload = {
"model": MODEL,
"messages": messages
}
try:
response = requests.post("https://openrouter.ai/api/v1/chat/completions", headers=headers, json=payload)
response.raise_for_status()
reply = response.json()["choices"][0]["message"]["content"]
except Exception as e:
reply = f"β Error: {e}"
return reply
# β
Launch chatbot without title or description
gr.ChatInterface(
fn=chat_fn,
theme="soft"
).launch()
|