mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-15 03:04:44 +08:00
feat: prose completion api
This commit is contained in:
@@ -17,11 +17,13 @@ from langgraph.types import Command
|
||||
from src.graph.builder import build_graph_with_memory
|
||||
from src.podcast.graph.builder import build_graph as build_podcast_graph
|
||||
from src.ppt.graph.builder import build_graph as build_ppt_graph
|
||||
from src.prose.graph.builder import build_graph as build_prose_graph
|
||||
from src.server.chat_request import (
|
||||
ChatMessage,
|
||||
ChatRequest,
|
||||
GeneratePodcastRequest,
|
||||
GeneratePPTRequest,
|
||||
GenerateProseRequest,
|
||||
TTSRequest,
|
||||
)
|
||||
from src.server.mcp_request import MCPServerMetadataRequest, MCPServerMetadataResponse
|
||||
@@ -254,6 +256,29 @@ async def generate_ppt(request: GeneratePPTRequest):
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@app.post("/api/prose/generate")
|
||||
async def generate_prose(request: GenerateProseRequest):
|
||||
try:
|
||||
logger.info(f"Generating prose for prompt: {request.prompt}")
|
||||
workflow = build_prose_graph()
|
||||
events = workflow.astream(
|
||||
{
|
||||
"content": request.prompt,
|
||||
"option": request.option,
|
||||
"command": request.command,
|
||||
},
|
||||
stream_mode="messages",
|
||||
subgraphs=True,
|
||||
)
|
||||
return StreamingResponse(
|
||||
(f"data: {event[0].content}\n\n" async for _, event in events),
|
||||
media_type="text/event-stream",
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception(f"Error occurred during prose generation: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@app.post("/api/mcp/server/metadata", response_model=MCPServerMetadataResponse)
|
||||
async def mcp_server_metadata(request: MCPServerMetadataRequest):
|
||||
"""Get information about an MCP server."""
|
||||
|
||||
@@ -74,3 +74,11 @@ class GeneratePodcastRequest(BaseModel):
|
||||
|
||||
class GeneratePPTRequest(BaseModel):
|
||||
content: str = Field(..., description="The content of the ppt")
|
||||
|
||||
|
||||
class GenerateProseRequest(BaseModel):
|
||||
prompt: str = Field(..., description="The content of the prose")
|
||||
option: str = Field(..., description="The option of the prose writer")
|
||||
command: Optional[str] = Field(
|
||||
"", description="The user custom command of the prose writer"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user