-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathllm_client.py
More file actions
30 lines (28 loc) · 1.13 KB
/
llm_client.py
File metadata and controls
30 lines (28 loc) · 1.13 KB
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
import os
import requests
import openai
class LLMClient:
def __init__(self):
self.backend = os.getenv("LLM_BACKEND", "ollama") # "openai" or "ollama"
self.model = os.getenv("LLM_MODEL", "llama3")
self.ollama_url = os.getenv("OLLAMA_URL", "http://localhost:11434/api/generate")
self.openai_key = os.getenv("OPENAI_API_KEY")
def complete(self, prompt, max_tokens=2048, temperature=0.2):
if self.backend == "openai":
openai.api_key = self.openai_key
response = openai.chat.completions.create(
model=self.model,
messages=[{"role": "user", "content": prompt}],
max_tokens=max_tokens,
temperature=temperature
)
return response.choices[0].message.content.strip()
else:
payload = {
"model": self.model,
"prompt": prompt,
"stream": False
}
response = requests.post(self.ollama_url, json=payload, timeout=300)
response.raise_for_status()
return response.json().get("response", "").strip()