Потоковая передача текста с помощью Langchain Ollama через Flask в реальном времениPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Потоковая передача текста с помощью Langchain Ollama через Flask в реальном времени

Сообщение Anonymous »

В настоящее время я передаю выходные данные во внешний интерфейс через API Flask и использую Langchain с локальной моделью Ollama. Потоковая передача работает, и я получаю выходные данные во внешнем интерфейсе, но это очень медленно и сначала генерирует поток в консоли, а затем отправляет его во внешний интерфейс как поток событий.
Как мне создать текстовый поток поскольку он генерируется в реальном времени. Ниже мой код:
app.py:

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

@app.route('/search/')
def search(query):
def generate_stream(query):
retrieved_info = mservice.retrieve_knowlede(query)
for chunk in llm_service.query_knowledge(retrieved_info, final_query, model_name=Config.LLM.MODEL_NAME):
if chunk.startswith("{"):
yield f'data: {chunk}\n\n'
else:
lines = chunk.split('\n')
for line in lines:
if line.strip():  # Only send non-empty lines
yield f'data: {line}\n\n'
time.sleep(0.12)
yield ''

return Response(generate_stream(final_query),
mimetype='text/event-stream')
LLM_Service.py:

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

@retry(wait=wait_random_exponential(min=0.1, max=0.5), stop=stop_after_attempt(5), reraise=True)
def query_knowledge(self, retrieved_info: List[Dict], query: str, model_name: str) -> Generator[str, None, None]:
context = json.dumps(retrieved_info, indent=2)

# First, stream the answer
answer_stream = self._stream_answer(query, context, model_name)
# Use a Future to store the streamed answer

streamed_answer_future = Future()

# Yield from _combine_streams, which will set the result of streamed_answer_future
yield from self._combine_streams(answer_stream, streamed_answer_future)
# Now that we have the full streamed answer, generate the full JSON
json_future = self.executor.submit(self._generate_full_json, query, context, model_name,
streamed_answer_future.result())
# Yield the full JSON
yield json.dumps(json_future.result())

def _stream_answer(self, query: str, context: str, model_name: str) -> Generator[str, None, None]:
prompt_template = PromptTemplate(template=_get_answer_prompt(),input_variables=["query", "context"])
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
gpt_model = ChatOllama(model=model_name, temperature=self.config.LLM.TEMPERATURE, callbacks=callback_manager)
llm_chain = LLMChain(llm=gpt_model, prompt=prompt_template)
return llm_chain.stream({"query": query, "context": context})
Я даже пробовал напрямую вызвать функцию _answer_stream, но это не имеет никакого значения.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Потоковая передача текста с помощью Langchain Ollama через Flask в реальном времени
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Потоковая передача результатов ChatGPT с помощью Flask и LangChain
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Потоковая потоковая передача видео с камеры FLIR с помощью Python
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Весна Ai Ollama Streaming Change: не потоковая передача токенов за токен
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Потоковая потоковая передача Polars: Parquet Parquet на основе Shift (-1)
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

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