From f6faee1b9ddb43fd2eeec608d15262b14a7c9396 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Sat, 31 May 2025 22:36:44 +0800 Subject: [PATCH] update --- cryptoai/routes/analysis.py | 152 +++++++++++++++++++++++++++++++++++- docker-compose.yml | 2 +- 2 files changed, 149 insertions(+), 5 deletions(-) diff --git a/cryptoai/routes/analysis.py b/cryptoai/routes/analysis.py index 1e72e2d..0fa326a 100644 --- a/cryptoai/routes/analysis.py +++ b/cryptoai/routes/analysis.py @@ -20,6 +20,8 @@ class AnalysisHistoryRequest(BaseModel): router = APIRouter() +agent_token = 'app-pPtva2AdJ8hJzkBKu12ThWjD' + @router.post("/analysis_history") async def analysis_history(request: AnalysisHistoryRequest, current_user: dict = Depends(get_current_user), @@ -50,13 +52,155 @@ class ChatRequest(BaseModel): message: str conversation_id: Optional[str] = None +class StopStreamingRequest(BaseModel): + user: str + task_id: str + +@router.post("/stop_streaming") +async def stop_streaming(request: StopStreamingRequest, + current_user: dict = Depends(get_current_user), + session: Session = Depends(get_db)): + + url = f'https://mate.aimateplus.com/v1/chat-messages/{request.task_id}/stop' + headers = { + 'Authorization': f'Bearer {agent_token}', + 'Content-Type': 'application/json' + } + payload = { + "user": request.user + } + response = requests.post(url, headers=headers, json=payload) + + if response.status_code != 200: + raise HTTPException( + status_code=response.status_code, + detail=f"Failed to stop streaming: {response.text}" + ) + + if response.json()["result"] == "success": + return {"message": "ok"} + else: + raise HTTPException( + status_code=response.status_code, + detail=f"Failed to stop streaming: {response.text}" + ) + +class RenameConversationRequest(BaseModel): + name: str + +@router.post('/conversations/{conversation_id}/name') +async def rename_conversation(conversation_id: str, + request: RenameConversationRequest, + current_user: dict = Depends(get_current_user), + session: Session = Depends(get_db)): + + url = f'https://mate.aimateplus.com/v1/conversations/{conversation_id}/name' + headers = { + 'Authorization': f'Bearer {agent_token}', + 'Content-Type': 'application/json' + } + payload = { + "name": request.name, + "user": current_user["mail"] + } + response = requests.post(url, headers=headers, json=payload) + if response.status_code != 200: + raise HTTPException( + status_code=response.status_code, + detail=f"Failed to rename conversation: {response.text}" + ) + + return response.json() + +@router.delete('/conversations/{conversation_id}') +async def delete_conversation(conversation_id: str, + current_user: dict = Depends(get_current_user), + session: Session = Depends(get_db)): + + url = f'https://mate.aimateplus.com/v1/conversations/{conversation_id}' + headers = { + 'Authorization': f'Bearer {agent_token}', + 'Content-Type': 'application/json' + } + + payload = { + "user": current_user["mail"] + } + response = requests.delete(url, headers=headers, json=payload) + if response.status_code != 200: + raise HTTPException( + status_code=response.status_code, + detail=f"Failed to delete conversation: {response.text}" + ) + + return {"message" : "ok"} + +@router.get('/conversations') +async def get_conversations(current_user: dict = Depends(get_current_user), + session: Session = Depends(get_db)): + + url = 'https://mate.aimateplus.com/v1/conversations' + url = f'{url}?user={current_user["mail"]}&limit=5' + headers = { + 'Authorization': f'Bearer {agent_token}', + 'Content-Type': 'application/json' + } + + response = requests.get(url, headers=headers) + + if response.status_code != 200: + raise HTTPException( + status_code=response.status_code, + detail=f"Failed to get conversations from Dify API: {response.text}" + ) + + conversations = [] + for conversation in response.json()["data"]: + conversations.append({ + "id": conversation["id"], + "name": conversation["name"], + "created_at": conversation["created_at"] + }) + + return conversations + +@router.get('/conversation_messages/{conversation_id}') +async def get_conversation_messages(conversation_id: str, + current_user: dict = Depends(get_current_user), + session: Session = Depends(get_db)): + + url = f'https://mate.aimateplus.com/v1/messages' + headers = { + 'Authorization': f'Bearer {agent_token}', + 'Content-Type': 'application/json' + } + + url = f'{url}?conversation_id={conversation_id}&user={current_user["mail"]}' + + response = requests.get(url, headers=headers) + + if response.status_code != 200: + raise HTTPException( + status_code=response.status_code, + detail=f"Failed to get messages from Dify API: {response.text}" + ) + + messages = [] + for message in response.json()["data"]: + messages.append({ + "id": message["id"], + "conversation_id": message["conversation_id"], + "query": message["query"], + "answer": message["answer"], + "created_at": message["created_at"] + }) + + return messages + @router.post("/chat-messages") async def chat(request: ChatRequest, current_user: dict = Depends(get_current_user), session: Session = Depends(get_db)): - - token = 'app-pPtva2AdJ8hJzkBKu12ThWjD' - payload = { "inputs" : {}, "query": request.message, @@ -69,7 +213,7 @@ async def chat(request: ChatRequest, url = 'https://mate.aimateplus.com/v1/chat-messages' headers = { - 'Authorization': f'Bearer {token}', + 'Authorization': f'Bearer {agent_token}', 'Content-Type': 'application/json' } diff --git a/docker-compose.yml b/docker-compose.yml index 8e36b26..13240a8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,7 +29,7 @@ services: cryptoai-api: build: . container_name: cryptoai-api - image: cryptoai-api:0.1.34 + image: cryptoai-api:0.1.35 restart: always ports: - "8000:8000"