VedantDhavan's picture
Deploy GraphRAG benchmark backend
83aed13
Raw
History Blame Contribute Delete
2.39 kB
import os
import time
from dotenv import load_dotenv
load_dotenv()
PROVIDER = os.getenv("LLM_PROVIDER", "openai")
# ==== OPENAI ====
def openai_generate(prompt):
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
start = time.time()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
)
latency = time.time() - start
text = response.choices[0].message.content
usage = response.usage
return {
"text": text,
"prompt_tokens": usage.prompt_tokens,
"completion_tokens": usage.completion_tokens,
"total_tokens": usage.total_tokens,
"latency": latency
}
# ---------------- GEMINI ----------------
def gemini_generate(prompt):
import google.generativeai as genai
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel("gemini-1.5-flash")
start = time.time()
response = model.generate_content(prompt)
latency = time.time() - start
text = response.text
# Gemini free tier doesn’t always return tokens → estimate
tokens = len(prompt.split()) + len(text.split())
return {
"text": text,
"prompt_tokens": len(prompt.split()),
"completion_tokens": len(text.split()),
"total_tokens": tokens,
"latency": latency
}
# ---------------- OLLAMA ----------------
def ollama_generate(prompt):
import requests
start = time.time()
response = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "llama3",
"prompt": prompt,
"stream": False
}
).json()
latency = time.time() - start
text = response["response"]
tokens = len(prompt.split()) + len(text.split())
return {
"text": text,
"prompt_tokens": len(prompt.split()),
"completion_tokens": len(text.split()),
"total_tokens": tokens,
"latency": latency
}
# ---------------- MAIN ENTRY ----------------
def generate(prompt):
if PROVIDER == "openai":
return openai_generate(prompt)
elif PROVIDER == "gemini":
return gemini_generate(prompt)
elif PROVIDER == "ollama":
return ollama_generate(prompt)
else:
raise ValueError("Invalid LLM provider")