From d3cd1f2c1a5ff9e2d12a2daace5cfeca2e66bad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E4=BF=8A=E7=94=B7?= Date: Thu, 18 Dec 2025 17:58:55 +0800 Subject: [PATCH 1/2] feat(apikey system): the default resource_id for creating the service's apikey is workspace_id --- api/app/controllers/api_key_controller.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/app/controllers/api_key_controller.py b/api/app/controllers/api_key_controller.py index 7617915b..dce8450d 100644 --- a/api/app/controllers/api_key_controller.py +++ b/api/app/controllers/api_key_controller.py @@ -8,6 +8,7 @@ from sqlalchemy.orm import Session from app.core.error_codes import BizCode from app.db import get_db from app.dependencies import get_current_user, cur_workspace_access_guard +from app.models import ApiKeyType from app.models.user_model import User from app.core.response_utils import success from app.schemas import api_key_schema @@ -39,6 +40,8 @@ def create_api_key( """ try: workspace_id = current_user.current_workspace_id + if data.type == ApiKeyType.SERVICE.value and not data.resource_id: + data.resource_id = workspace_id # 创建 API Key api_key_obj = ApiKeyService.create_api_key( From 45db8fd1bf51e450c7d8b2ca4122dc06763c4611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E4=BF=8A=E7=94=B7?= Date: Thu, 18 Dec 2025 18:52:38 +0800 Subject: [PATCH 2/2] feat(apikey system): add the API key test interface for the memory engine --- .../service/memory_api_controller.py | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/api/app/controllers/service/memory_api_controller.py b/api/app/controllers/service/memory_api_controller.py index 22dcb87b..81aaa0c4 100644 --- a/api/app/controllers/service/memory_api_controller.py +++ b/api/app/controllers/service/memory_api_controller.py @@ -1,10 +1,14 @@ """Memory 服务接口 - 基于 API Key 认证""" -from fastapi import APIRouter, Depends +import uuid + +from fastapi import APIRouter, Depends, Request, Body from sqlalchemy.orm import Session from app.db import get_db from app.core.response_utils import success from app.core.logging_config import get_business_logger +from app.core.api_key_auth import require_api_key +from app.schemas.api_key_schema import ApiKeyAuth router = APIRouter(prefix="/memory", tags=["V1 - Memory API"]) logger = get_business_logger() @@ -14,3 +18,31 @@ logger = get_business_logger() async def get_memory_info(): """获取记忆服务信息(占位)""" return success(data={}, msg="Memory API - Coming Soon") + + +# /v1/memory/{resource_id}/chat +@router.post("/{resource_id}/chat") +@require_api_key(scopes=["memory"]) +async def chat_with_agent_demo( + resource_id: uuid.UUID, + request: Request, + api_key_auth: ApiKeyAuth = None, + db: Session = Depends(get_db), + message: str = Body(..., description="聊天消息内容"), +): + """ + Agent 聊天接口demo + + scopes: 所需的权限范围列表["app", "rag", "memory"] + + Args: + resource_id: 如果是应用的apikey传的是应用id; 如果是服务的apikey传的是工作空间id + message: 请求参数 + request: 声明请求 + api_key_auth: 包含验证后的API Key 信息 + db: db_session + """ + logger.info(f"API Key Auth: {api_key_auth}") + logger.info(f"Resource ID: {resource_id}") + logger.info(f"Message: {message}") + return success(data={"received": True}, msg="消息已接收") \ No newline at end of file