This commit is contained in:
aaron 2025-05-31 22:36:44 +08:00
parent da278dc033
commit f6faee1b9d
2 changed files with 149 additions and 5 deletions

View File

@ -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'
}

View File

@ -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"