Я интегрирую библиотеку 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)
Я пытался создать потокового чат-бота, но ни один метод не помог.
Я интегрирую библиотеку Llama Cpp Pyhton для локального запуска LLM Huggingface. Я могу генерировать вывод текста, но я хотел бы добавить потоковую передачу в свой чат-бот, чтобы, как только генерация началась, градиент начал получать текст. Llama Cpp Python: https://github.com/abetlen/llama-cpp-python Вот мой код: [code]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
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
demo.queue() demo.launch(server_name=args.host, server_port=args.port, share=args.share) [/code] Я пытался создать потокового чат-бота, но ни один метод не помог.
Я работаю над приложением чат-бота с использованием Amazon Bedrock и модели Llama 3. Я использую Streamlit для интерфейса и LangChain для управления разговором. Однако я столкнулся с проблемой, когда чат-бот повторяет всю историю разговора вместо...
В настоящее время я работаю над проектом, который включает обработку потоковых данных в реальном времени на Python, и ищу рекомендации по наиболее эффективным методам или библиотекам, доступным для обработки таких потоков данных. Данные, с которыми...
Мы получаем данные каждые 0,01 секунды с URL-адреса устройства Bluetooth после того, как оно подписано, но IOSinklush() вызывает помехи, которые увеличивают интервал (0,2 секунды и т. д.). Есть идеи, что может быть причиной этого и/или будет ли...
Я создаю свой браузер, используя PyQt5. Я задаю себе вопрос: как мне сделать так, чтобы можно было смотреть видеопотоки на сайтах? Пробовал через vlc, но там нужно еще что-то скачать, потому что ошибка. Просто импортируйте vlc. Устанавливается через...