У меня есть конечная точка Fastapi (/generateStreamer), который генерирует ответы из модели LLM. Я хочу транслировать вывод, чтобы пользователи могли видеть текст по мере его создания, а не ждать полного ответа. В настоящее время я использую TextiteratortratorsTreamer из библиотеки Transformers и StreamingResponse от Fastapi, который работает, но когда я тестирую с Curl, ответ прибывает предложение по предложению, а не Word By Word. Я прочитал несколько тем темы по аналогичным вопросам, но ни одна из них не предлагает мне решение этой проблемы[email protected](
"/generateStreamer"
)
@api_version(1)
async def generateStreamer(features: InputFeatures, request: Request):
print("GenerateStreamer endpoint was called, generating response...")
tokenizer = request.app.state.tokenizer
model = request.app.state.model
messages = [
{"role": "system", "content": features.prompt.strip()},
{"role": "user", "content": features.text.strip()}
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
def generate():
torch.set_grad_enabled(False)
model.generate(
inputs['input_ids'],
streamer=streamer,
max_new_tokens=512,
num_return_sequences=1,
do_sample=True,
temperature=0.7,
repetition_penalty=1,
pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id,
top_p=1,
top_k=50
)
thread = Thread(target=generate)
thread.start()
return StreamingResponse(streamer, media_type="text/plain")
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-for-word
Fastapi Endpoint Stream LLM Вывод Word Word Word ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение