diff options
| author | batsumaru <> | 2026-09-11 13:56:07 +0900 |
|---|---|---|
| committer | batsumaru <> | 2026-09-11 13:56:07 +0900 |
| commit | 1048bc145cd0341fcbdd269f3275079bc40ede70 (patch) | |
| tree | 54616ee011a4914a28e8f360237fbdc9492715c7 /llm.py | |
| parent | 9b51fae7d02669f3d7b43703b5e0b6731d2f32ce (diff) | |
Added llm logic and config
Diffstat (limited to 'llm.py')
| -rw-r--r-- | llm.py | 42 |
1 files changed, 42 insertions, 0 deletions
@@ -0,0 +1,42 @@ +import json +from collections.abc import Iterator + +import requests + +class LLM: + def __init__(self, url: str) -> None: + self.url = url + + def chat(self, messages: list[dict[str, str]], max_tokens: int = 256) -> Iterator[str]: + response = requests.post( + self.url, + json = { + "messages": messages, + "max_tokens": max_tokens, + "temperature": 0.7, + "stream": True, + }, + stream=True, + ) + response.raise_for_status() + + for line in response.iter_lines(): + if not line: + continue + + if not line.startswith(b"data: "): + continue + + data = line[6:] + + if data == b"[DONE]": + break + + chunk = json.loads(data) + + delta = chunk["choices"][0]["delta"] + content = delta.get("content") + + if content: + yield content + |
