File size: 1,091 Bytes
3afd34e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastapi import FastAPI, Query
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
import torch
from retriever import retrieve_documents

# Load Mistral 7B model
MODEL_NAME = "mistralai/Mistral-7B-v0.1"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, device_map="auto", torch_dtype=torch.float16)

# Create inference pipeline
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)

# FastAPI server
app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Mistral 7B RAG API is running!"}

@app.get("/generate/")
def generate_response(query: str = Query(..., title="User Query")):
    # Retrieve relevant documents
    retrieved_docs = retrieve_documents(query)

    # Format prompt for RAG
    prompt = f"Use the following information to answer:\n{retrieved_docs}\n\nUser: {query}\nAI:"
    
    # Generate response
    output = generator(prompt, max_length=256, do_sample=True, temperature=0.7)[0]["generated_text"]
    
    return {"query": query, "response": output}