Есть ли в MCP способ передать по частям ответ LLM обратно клиенту?Python

Программы на Python
Ответить
Anonymous
 Есть ли в MCP способ передать по частям ответ LLM обратно клиенту?

Сообщение Anonymous »

Я использую FastMCP на Python для реализации MCP-сервера. В настоящее время я столкнулся с проблемой, связанной с потоковой передачей сгенерированных токенов из LLM. Я не хочу ждать завершенного ответа и возвращать весь текст, я скорее хочу передавать его по частям, чтобы сократить время ответа для пользователя. Мне кажется, это правильный вариант использования при работе с MCP.
Я не могу контролировать клиент, так как я использую такие клиенты, как LibreChat или Open WebUI, для подключения к серверу MCP.
Например, в открытом веб-интерфейсе вы можете реализовать конвейер, поддерживающий потоковую передачу (по частям).
Вот минимальный пример моего использования случай:

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

from fastmcp import FastMCP
from llama_index.llms.lmstudio import LMStudio
import asyncio

mcp = FastMCP()

@mcp.tool()
async def story_teller(topic: str):
llm = LMStudio(model_name="qwen/qwen3-4b-2507")
prompt = f"Tell me a story about {topic}."

async for chunk in await llm.astream(prompt):
yield chunk

if __name__ == "__main__":
asyncio.run(mcp.run_async(host="0.0.0.0", port=8001, transport="streamable-http"))
К сожалению, все протестированные мной клиенты MCP не могут обработать ответ от сервера: Кто-нибудь знает, как этот вариант использования должен работать?

Подробнее здесь: https://stackoverflow.com/questions/798 ... the-client
Ответить

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

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

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

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

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