Промежуточный коммит. Добавлены методы stream_responce (agent), generate_stream_token (ollamaprovider)

This commit is contained in:
2026-05-12 22:24:39 +03:00
parent 3b4c8a1151
commit 30ce868764
8 changed files with 67 additions and 9 deletions
Binary file not shown.
+1 -1
View File
@@ -193,7 +193,7 @@ User`s name: {self.user_name}
if max_tokens is not None:
self.character.max_tokens = max_tokens
self.character.save()
response = self.llm.generate_stream(
response = self.llm.generate_stream_tokens(
messages,
temperature=self.character.temperature,
max_tokens=self.character.max_tokens
Binary file not shown.
+3 -1
View File
@@ -36,6 +36,7 @@ def init():
#запрос на генерацию
@ui.route("/chat", methods=["POST"])
#@ui.route("/stream", methods=["POST"])
def chat():
data = request.json
@@ -51,11 +52,12 @@ def chat():
})
"""#список персонажей
#список персонажей
@ui.route("/characters", methods=["GET"])
def get_characters():
return Agent.get_all_char_info()
"""
#выбор персонажа (не робит)
@ui.route("/select_character", methods=["POST"])
def select_character():
+3 -7
View File
@@ -7,12 +7,8 @@ sendBtn.addEventListener("click", async () => {
const messages = document.getElementById("messages");
messages.innerHTML += `<p><b>You:</b> ${text}</p>`;
const source = new EventSource("/stream");
source.onmessage = function(event) {
messages.innerHTML += event.data;
};
messages.innerHTML += `<p><b>You:</b> ${text}</p>`; //=> получаем имя пользователя
const response = await fetch("/chat", {
method: "POST",
headers: {
@@ -38,6 +34,6 @@ async function loadChat() {
const messages = document.getElementById("messages");
data.messages.forEach(msg => {
messages.innerHTML += `<p><b>${msg.role}:</b> ${msg.content}</p>`;
messages.innerHTML += `<p><b>${msg.role}:</b> ${msg.content}</p>`; //добавить проверку role == user => получаем имя пользователя
});
}
Binary file not shown.
+28
View File
@@ -27,6 +27,34 @@ class OllamaProvider:
response_text += content
return response_text
except Exception as e:
error_msg = str(e)
if "502" in error_msg:
return "Ошибка: Проверьте наличие VPN или Proxy."
return f"Ошибка: {error_msg}"
def generate_stream_tokens(self, messages, temperature=0.8, max_tokens=300):
"""Генерирует ответ от Ollama и возвращает его в виде стрима"""
try:
stream = ollama.chat(
model=self.model,
messages=messages,
stream=True,
options={
"temperature": temperature,
"num_predict": max_tokens,
},
)
# Собираем ответ в строку
response_text = ""
for chunk in stream:
content = chunk['message']['content']
#print(content, end='', flush=True)
#response_text += content
#return response_text
yield content
except Exception as e:
error_msg = str(e)
if "502" in error_msg: