Update
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
import httpx
|
||||
|
||||
|
||||
def chat(
|
||||
base_url: str,
|
||||
model: str,
|
||||
messages: List[Dict[str, str]],
|
||||
options: Optional[Dict[str, Any]] = None,
|
||||
timeout: float = 600.0,
|
||||
) -> str:
|
||||
url = base_url.rstrip("/") + "/api/chat"
|
||||
payload: Dict[str, Any] = {
|
||||
"model": model,
|
||||
"messages": messages,
|
||||
"stream": False,
|
||||
}
|
||||
if options:
|
||||
payload["options"] = options
|
||||
with httpx.Client(timeout=timeout) as client:
|
||||
r = client.post(url, json=payload)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
msg = data.get("message") or {}
|
||||
content = msg.get("content")
|
||||
if not isinstance(content, str):
|
||||
raise RuntimeError(f"Unexpected Ollama response: {json.dumps(data)[:800]}")
|
||||
return content
|
||||
Reference in New Issue
Block a user