Задать вопрос
@pyaniy_tracktorist

Как из цикла for получить последовательный ответ в одну строку?

Всех приветствую. Питон изучаю не так давно, судите строго, ругайте. Суть вопроса и проблемы: пытаюсь интегрировать нейронку llama-cpp-python. И возникла потребность ускорить процесс получение ответа от неё, путём потоковой передачи этого ответа (stream = True далее вступает итерация циклом for) в отдельную переменную для дальнейшей передачи её в другую функцию. Проблема в том, что для дальнейшей функции, данные ответа должны быть как при использовании print("Hello World" end = ""). Надеюсь никого не запутал и вы поняли суть моего толкования.

from llama_cpp import Llama
from golosTTS import pspeak
import time
print("Загрузка...")
llm = Llama( 
    model_path="W:\pygmalion-2-7b.Q2_K.gguf", 
    n_threads=8, 
    n_batch=512, 
    n_gpu_layers=43, 
    n_ctx=4096, 
    )

print("Загрузка завершена.")

while True:
  print("Введите запрос: ")
  prompt = input()
  input_prompt = f'''SYSTEM: Вы полезный, уважительный и честный помощник. Всегда отвечайте на русском языке.

  USER: {prompt}

  ASSISTANT:
  '''

  output = llm(
      input_prompt,
      max_tokens=500,
      temperature=0.8,
      top_p=0.95,
      repeat_penalty=1.2,
      stream=True,
      top_k=50,
      stop = ['USER:'], 
      echo=False) 
  llavw = list()
  for stream in output:
    llav = stream["choices"][0]["text"]
    llavw.append(str(llav))                              #ВОТ ТУТ И ЗАГВОСТКА
    spisok = "".join(llavw)
    otvet = llav.replace(spisok, "")
    print(spisok)
  • Вопрос задан
  • 619 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Советую поучить стандартную библиотеку языка, а потом уже браться за такие вещи.
У тебя в коде уже есть пример, как список строк превратить в одну строку, соединив их разделителем.
spisok = "".join(llavw)
В чём проблема адаптировать этот же метод к твоей задаче? Сформируй список из отдельных строк, потом объедини их. Единственно, стоит убедиться, что ты подаёшь на вход именно список строк, а не каких-то других объектов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы