Как добавить потоковую передачу в мой чат-бот Gradio при использовании Python Llama cpp с langchainPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить потоковую передачу в мой чат-бот Gradio при использовании Python Llama cpp с langchain

Сообщение Anonymous »

Я интегрирую библиотеку Llama Cpp Pyhton для локального запуска LLM Huggingface. Я могу генерировать вывод текста, но я хотел бы добавить потоковую передачу в свой чат-бот, чтобы, как только генерация началась, градиент начал получать текст.
Llama Cpp Python: https://github.com/abetlen/llama-cpp-python
Вот мой код:

Код: Выделить всё

import os, torch, argparse
from threading import Thread
from typing import Optional

import gradio as gr
from llama_cpp import Llama
from src import quantize
from langchain import PromptTemplate, LLMChain
from langchain.llms.base import LLM
from langchain_community.llms import LlamaCpp
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain_core.prompts import PromptTemplate
from core import list_download_models, remove_dir, default_repo_id, read_config, update_config
from modelsui import create_models_ui
import sys

def snapshot_download_and_convert_to_gguf(repo_id):
gguf_model_path = quantize.quantize_model(repo_id)
return gguf_model_path

def init_llm_chain(model_path):
llm = LlamaCpp(
model_path=model_path,
n_ctx=6000,
n_batch=30,
# temperature=0.9,
# max_tokens=4095,
n_parts=1,
callback_manager=callback_manager,
verbose=True)

template = """Question: {question}
Answer: Let's work this out in a step by step way to be sure we have the right answer."""

prompt = PromptTemplate.from_template(template)
llm_chain = prompt | llm
return llm_chain, llm

model_path = snapshot_download_and_convert_to_gguf(default_repo_id)
with gr.Blocks(css='style.css') as demo:
with gr.Tab("Chat"):
with gr.Row():
with gr.Column(scale=1):
with gr.Column(scale=4):
with gr.Group():
chatbot = gr.Chatbot(elem_id="chatbot-container")
msg = gr.Textbox(label="Prompt")
stop = gr.Button("Stop")

llm_chain, llm = init_llm_chain(model_path)

def user(user_message, history):
return "", history + [[user_message, None]]

def bot(history):
print("Question: ", history[-1][0])
output = llm_chain.invoke({"question": history[-1][0]})
print("stream:", output)
history[-1][1] = ""
for character in output:
print(character)
history[-1][1] += character
yield history

submit_event = msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)

demo.queue()
demo.launch(server_name=args.host, server_port=args.port, share=args.share)
Я пытался создать потокового чат-бота, но ни один метод не помог.


Подробнее здесь: https://stackoverflow.com/questions/783 ... with-langc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»