mirror of https://github.com/langgenius/dify.git
feat: add Service API for memory read and modify
This commit is contained in:
parent
0d95c2192e
commit
e31e4ab677
|
|
@ -0,0 +1,57 @@
|
|||
from flask_restful import Resource, reqparse
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from controllers.service_api import api
|
||||
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
||||
from libs.helper import uuid_value
|
||||
from models import db
|
||||
from models.chatflow_memory import ChatflowMemoryVariable
|
||||
from services.chatflow_memory_service import ChatflowMemoryService
|
||||
from services.workflow_service import WorkflowService
|
||||
|
||||
|
||||
class MemoryListApi(Resource):
|
||||
@validate_app_token(fetch_user_arg=FetchUserArg(fetch_from=WhereisUserArg.JSON, required=True))
|
||||
def get(self, app_model):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument("conversation_id", required=False, type=uuid_value, location="args")
|
||||
args = parser.parse_args()
|
||||
conversation_id = args.get("conversation_id")
|
||||
|
||||
result = ChatflowMemoryService.get_persistent_memories(app_model)
|
||||
if conversation_id:
|
||||
result = [*result, *ChatflowMemoryService.get_session_memories(app_model, conversation_id)]
|
||||
|
||||
return result
|
||||
|
||||
class MemoryEditApi(Resource):
|
||||
@validate_app_token(fetch_user_arg=FetchUserArg(fetch_from=WhereisUserArg.JSON, required=True))
|
||||
def put(self, app_model):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('id', type=str, required=True)
|
||||
parser.add_argument('node_id', type=str, required=False)
|
||||
parser.add_argument('update', type=str, required=True)
|
||||
args = parser.parse_args()
|
||||
workflow = WorkflowService().get_published_workflow(app_model)
|
||||
if not workflow:
|
||||
return {'error': 'Workflow not found'}, 404
|
||||
memory_spec = next((it for it in workflow.memory_blocks if it.id == args['id']), None)
|
||||
if not memory_spec:
|
||||
return {'error': 'Memory not found'}, 404
|
||||
with Session(db.engine) as session:
|
||||
ChatflowMemoryVariable(
|
||||
tenant_id=app_model.tenant_id,
|
||||
app_id=app_model.id,
|
||||
node_id=args['node_id'],
|
||||
memory_id=args['id'],
|
||||
name=memory_spec.name,
|
||||
value=args['update'],
|
||||
scope=memory_spec.scope,
|
||||
term=memory_spec.term,
|
||||
)
|
||||
session.add(memory_spec)
|
||||
session.commit()
|
||||
return '', 204
|
||||
|
||||
api.add_resource(MemoryListApi, '/memories')
|
||||
api.add_resource(MemoryEditApi, '/memory-edit')
|
||||
Loading…
Reference in New Issue