mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-10 21:09:03 +08:00
Feat: add Langfuse APIs (#6460)
### What problem does this PR solve? Add Langfuse APIs ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
parent
66e557b6c0
commit
5e0a77df2b
@ -24,7 +24,7 @@ from api.db.services.langfuse_service import TenantLangfuseService
|
|||||||
from api.utils.api_utils import get_error_data_result, get_json_result, server_error_response, validate_request
|
from api.utils.api_utils import get_error_data_result, get_json_result, server_error_response, validate_request
|
||||||
|
|
||||||
|
|
||||||
@manager.route("/set_api_key", methods=["POST"]) # noqa: F821
|
@manager.route("/api_key", methods=["POST", "PUT"]) # noqa: F821
|
||||||
@login_required
|
@login_required
|
||||||
@validate_request("secret_key", "public_key", "host")
|
@validate_request("secret_key", "public_key", "host")
|
||||||
def set_api_key():
|
def set_api_key():
|
||||||
@ -53,6 +53,33 @@ def set_api_key():
|
|||||||
TenantLangfuseService.save(**langfuse_keys)
|
TenantLangfuseService.save(**langfuse_keys)
|
||||||
else:
|
else:
|
||||||
TenantLangfuseService.update_by_tenant(tenant_id=current_user.id, langfuse_keys=langfuse_keys)
|
TenantLangfuseService.update_by_tenant(tenant_id=current_user.id, langfuse_keys=langfuse_keys)
|
||||||
|
return get_json_result(data=langfuse_keys)
|
||||||
|
except Exception as e:
|
||||||
|
server_error_response(e)
|
||||||
|
|
||||||
|
|
||||||
|
@manager.route("/api_key", methods=["GET"]) # noqa: F821
|
||||||
|
@login_required
|
||||||
|
@validate_request()
|
||||||
|
def get_api_key():
|
||||||
|
langfuse_entry = TenantLangfuseService.filter_by_tenant_with_info(tenant_id=current_user.id)
|
||||||
|
if not langfuse_entry:
|
||||||
|
return get_error_data_result(message="Have not record any Langfuse keys.")
|
||||||
|
|
||||||
|
return get_json_result(data=langfuse_entry)
|
||||||
|
|
||||||
|
|
||||||
|
@manager.route("/api_key", methods=["DELETE"]) # noqa: F821
|
||||||
|
@login_required
|
||||||
|
@validate_request()
|
||||||
|
def delete_api_key():
|
||||||
|
langfuse_entry = TenantLangfuseService.filter_by_tenant(tenant_id=current_user.id)
|
||||||
|
if not langfuse_entry:
|
||||||
|
return get_error_data_result(message="Have not record any Langfuse keys.")
|
||||||
|
|
||||||
|
with DB.atomic():
|
||||||
|
try:
|
||||||
|
TenantLangfuseService.delete_model(langfuse_entry)
|
||||||
return get_json_result(data=True)
|
return get_json_result(data=True)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
server_error_response(e)
|
server_error_response(e)
|
||||||
|
@ -524,9 +524,7 @@ class TenantLangfuse(DataBaseModel):
|
|||||||
tenant_id = CharField(max_length=32, null=False, primary_key=True)
|
tenant_id = CharField(max_length=32, null=False, primary_key=True)
|
||||||
secret_key = CharField(max_length=2048, null=False, help_text="SECRET KEY", index=True)
|
secret_key = CharField(max_length=2048, null=False, help_text="SECRET KEY", index=True)
|
||||||
public_key = CharField(max_length=2048, null=False, help_text="PUBLIC KEY", index=True)
|
public_key = CharField(max_length=2048, null=False, help_text="PUBLIC KEY", index=True)
|
||||||
host = CharField(max_length=128, null=False, help_text="host", index=True)
|
host = CharField(max_length=128, null=False, help_text="HOST", index=True)
|
||||||
# max_tokens = IntegerField(default=8192, index=True)
|
|
||||||
# used_tokens = IntegerField(default=0, index=True)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Langfuse host" + self.host
|
return "Langfuse host" + self.host
|
||||||
|
@ -34,13 +34,23 @@ class TenantLangfuseService(CommonService):
|
|||||||
@classmethod
|
@classmethod
|
||||||
@DB.connection_context()
|
@DB.connection_context()
|
||||||
def filter_by_tenant(cls, tenant_id):
|
def filter_by_tenant(cls, tenant_id):
|
||||||
fields = [cls.model.host, cls.model.secret_key, cls.model.public_key]
|
fields = [cls.model.tenant_id, cls.model.host, cls.model.secret_key, cls.model.public_key]
|
||||||
try:
|
try:
|
||||||
keys = cls.model.select(*fields).where(cls.model.tenant_id == tenant_id).first()
|
keys = cls.model.select(*fields).where(cls.model.tenant_id == tenant_id).first()
|
||||||
return keys
|
return keys
|
||||||
except peewee.DoesNotExist:
|
except peewee.DoesNotExist:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@DB.connection_context()
|
||||||
|
def filter_by_tenant_with_info(cls, tenant_id):
|
||||||
|
fields = [cls.model.tenant_id, cls.model.host, cls.model.secret_key, cls.model.public_key]
|
||||||
|
try:
|
||||||
|
keys = cls.model.select(*fields).where(cls.model.tenant_id == tenant_id).dicts().first()
|
||||||
|
return keys
|
||||||
|
except peewee.DoesNotExist:
|
||||||
|
return None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_by_tenant(cls, tenant_id, langfuse_keys):
|
def update_by_tenant(cls, tenant_id, langfuse_keys):
|
||||||
langfuse_keys["update_time"] = current_timestamp()
|
langfuse_keys["update_time"] = current_timestamp()
|
||||||
@ -55,3 +65,7 @@ class TenantLangfuseService(CommonService):
|
|||||||
kwargs["update_date"] = datetime_format(datetime.now())
|
kwargs["update_date"] = datetime_format(datetime.now())
|
||||||
obj = cls.model.create(**kwargs)
|
obj = cls.model.create(**kwargs)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def delete_model(cls, langfuse_model):
|
||||||
|
langfuse_model.delete_instance()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user