Промежуточный коммит. Добавлены методы stream_responce (agent), generate_stream_token (ollamaprovider)
This commit is contained in:
Binary file not shown.
+1
-1
@@ -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.
@@ -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():
|
||||
|
||||
@@ -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.
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user