|
1 |
| - |
2 |
| - |
3 | 1 | from datetime import datetime, timedelta
|
4 | 2 | from typing import Annotated
|
5 | 3 | from fastapi import APIRouter, Depends
|
6 | 4 |
|
7 | 5 | from agent.llm import get_registered_llm_client, import_clients
|
8 | 6 | from auth.get_user_info import get_user_id
|
9 | 7 | from auth.verify_admin import verify_admin
|
10 |
| -from core.service.user_llm_token import UserLLMTokenService, CreateUserLLMTokenVO, get_llm_token_service |
11 |
| -from core.service.user_token_usage import UserTokenUsageService, get_user_token_usage_service |
| 8 | +from core.service.user_llm_token import ( |
| 9 | + UserLLMTokenService, |
| 10 | + CreateUserLLMTokenVO, |
| 11 | + get_llm_token_service, |
| 12 | +) |
| 13 | +from core.service.user_token_usage import ( |
| 14 | + UserTokenUsageService, |
| 15 | + get_user_token_usage_service, |
| 16 | +) |
12 | 17 |
|
13 | 18 | router = APIRouter(
|
14 | 19 | prefix="/api/user",
|
15 | 20 | tags=["user"],
|
16 | 21 | responses={404: {"description": "Not found"}},
|
17 | 22 | )
|
18 | 23 |
|
| 24 | + |
19 | 25 | @router.get("/llms")
|
20 | 26 | def get_avaliable_llms():
|
21 |
| - import_clients() |
22 |
| - llms = get_registered_llm_client() |
23 |
| - keys = llms.keys() |
24 |
| - return list(keys) |
| 27 | + return ["openai", "gemini"] |
| 28 | + |
25 | 29 |
|
26 | 30 | @router.post("/llm_token")
|
27 | 31 | def create_token(
|
28 |
| - llm_token: CreateUserLLMTokenVO, |
29 |
| - user_id: Annotated[str | None, Depends(get_user_id)] = None, |
30 |
| - llm_service: Annotated[UserLLMTokenService | None, Depends(get_llm_token_service)] = None |
| 32 | + llm_token: CreateUserLLMTokenVO, |
| 33 | + user_id: Annotated[str | None, Depends(get_user_id)] = None, |
| 34 | + llm_service: Annotated[ |
| 35 | + UserLLMTokenService | None, Depends(get_llm_token_service) |
| 36 | + ] = None, |
31 | 37 | ):
|
32 |
| - llm_token.user_id = user_id |
| 38 | + llm_token.user_id = user_id |
| 39 | + |
| 40 | + return llm_service.create_llm_token(llm_token) |
33 | 41 |
|
34 |
| - return llm_service.create_llm_token(llm_token) |
35 | 42 |
|
36 | 43 | @router.get("/llm_token/{token_id}")
|
37 | 44 | def get_token(
|
38 |
| - token_id: str, |
39 |
| - user_id: Annotated[str | None, Depends(get_user_id)] = None, |
40 |
| - llm_service: Annotated[UserLLMTokenService | None, Depends(get_llm_token_service)] = None |
| 45 | + token_id: str, |
| 46 | + user_id: Annotated[str | None, Depends(get_user_id)] = None, |
| 47 | + llm_service: Annotated[ |
| 48 | + UserLLMTokenService | None, Depends(get_llm_token_service) |
| 49 | + ] = None, |
41 | 50 | ):
|
42 |
| - |
43 |
| - return llm_service.get_llm_token(id=token_id, user_id=user_id) |
| 51 | + |
| 52 | + return llm_service.get_llm_token(id=token_id, user_id=user_id) |
| 53 | + |
44 | 54 |
|
45 | 55 | @router.get("/llm_tokens")
|
46 | 56 | def list_by_user(
|
47 |
| - user_id: Annotated[str | None, Depends(get_user_id)] = None, |
48 |
| - llm_service: Annotated[UserLLMTokenService | None, Depends(get_llm_token_service)] = None |
| 57 | + user_id: Annotated[str | None, Depends(get_user_id)] = None, |
| 58 | + llm_service: Annotated[ |
| 59 | + UserLLMTokenService | None, Depends(get_llm_token_service) |
| 60 | + ] = None, |
49 | 61 | ):
|
50 |
| - return llm_service.list_by_user(user_id) |
| 62 | + return llm_service.list_by_user(user_id) |
| 63 | + |
51 | 64 |
|
52 | 65 | @router.delete("/llm_token/{token_id}")
|
53 | 66 | def delete_token(
|
54 |
| - token_id: str, |
55 |
| - user_id: Annotated[str | None, Depends(get_user_id)] = None, |
56 |
| - llm_service: Annotated[UserLLMTokenService | None, Depends(get_llm_token_service)] = None |
| 67 | + token_id: str, |
| 68 | + user_id: Annotated[str | None, Depends(get_user_id)] = None, |
| 69 | + llm_service: Annotated[ |
| 70 | + UserLLMTokenService | None, Depends(get_llm_token_service) |
| 71 | + ] = None, |
57 | 72 | ):
|
58 |
| - print(f"delete_llm_token, token={token_id}, user_id={user_id}") |
59 |
| - llm_service.delete_llm_token(id=token_id, user_id=user_id) |
60 |
| - return {} |
| 73 | + print(f"delete_llm_token, token={token_id}, user_id={user_id}") |
| 74 | + llm_service.delete_llm_token(id=token_id, user_id=user_id) |
| 75 | + return {} |
| 76 | + |
61 | 77 |
|
62 | 78 | @router.get("/llm_token_usages")
|
63 | 79 | def token_usage(
|
64 |
| - start_date: datetime, |
65 |
| - end_date: datetime, |
66 |
| - user_id: Annotated[str | None, Depends(get_user_id)] = None, |
67 |
| - user_token_usage_service: Annotated[UserTokenUsageService | None, Depends(get_user_token_usage_service)] = None, |
| 80 | + start_date: datetime, |
| 81 | + end_date: datetime, |
| 82 | + user_id: Annotated[str | None, Depends(get_user_id)] = None, |
| 83 | + user_token_usage_service: Annotated[ |
| 84 | + UserTokenUsageService | None, Depends(get_user_token_usage_service) |
| 85 | + ] = None, |
68 | 86 | ):
|
69 |
| - return user_token_usage_service.usage_stats(user_id=user_id, start_date=start_date, end_date=end_date) |
| 87 | + return user_token_usage_service.usage_stats( |
| 88 | + user_id=user_id, start_date=start_date, end_date=end_date |
| 89 | + ) |
| 90 | + |
70 | 91 |
|
71 | 92 | @router.get("/llm_token_usages/analyzer", dependencies=[Depends(verify_admin)])
|
72 | 93 | def token_usage_analyze(
|
73 |
| - start_date: datetime = datetime.now() - timedelta(days=30), |
74 |
| - end_date: datetime = datetime.now(), |
75 |
| - user_token_usage_service: Annotated[UserTokenUsageService | None, Depends(get_user_token_usage_service)] = None, |
| 94 | + start_date: datetime = datetime.now() - timedelta(days=30), |
| 95 | + end_date: datetime = datetime.now(), |
| 96 | + user_token_usage_service: Annotated[ |
| 97 | + UserTokenUsageService | None, Depends(get_user_token_usage_service) |
| 98 | + ] = None, |
76 | 99 | ):
|
77 |
| - return user_token_usage_service.analyze_token_usage(start_date=start_date, end_date=end_date) |
| 100 | + return user_token_usage_service.analyze_token_usage( |
| 101 | + start_date=start_date, end_date=end_date |
| 102 | + ) |
| 103 | + |
78 | 104 |
|
79 | 105 | @router.get("/llm_token_usages/top_bots", dependencies=[Depends(verify_admin)])
|
80 | 106 | def top_used_bots(
|
81 |
| - start_date: datetime = datetime.now() - timedelta(days=30), |
82 |
| - end_date: datetime = datetime.now(), |
83 |
| - user_token_usage_service: Annotated[UserTokenUsageService | None, Depends(get_user_token_usage_service)] = None, |
| 107 | + start_date: datetime = datetime.now() - timedelta(days=30), |
| 108 | + end_date: datetime = datetime.now(), |
| 109 | + user_token_usage_service: Annotated[ |
| 110 | + UserTokenUsageService | None, Depends(get_user_token_usage_service) |
| 111 | + ] = None, |
84 | 112 | ):
|
85 |
| - return user_token_usage_service.top_bots(start_date=start_date, end_date=end_date) |
| 113 | + return user_token_usage_service.top_bots(start_date=start_date, end_date=end_date) |
| 114 | + |
86 | 115 |
|
87 | 116 | @router.get("/llm_token_usages/top_users", dependencies=[Depends(verify_admin)])
|
88 | 117 | def top_used_users(
|
89 |
| - start_date: datetime = datetime.now() - timedelta(days=30), |
90 |
| - end_date: datetime = datetime.now(), |
91 |
| - user_token_usage_service: Annotated[UserTokenUsageService | None, Depends(get_user_token_usage_service)] = None, |
| 118 | + start_date: datetime = datetime.now() - timedelta(days=30), |
| 119 | + end_date: datetime = datetime.now(), |
| 120 | + user_token_usage_service: Annotated[ |
| 121 | + UserTokenUsageService | None, Depends(get_user_token_usage_service) |
| 122 | + ] = None, |
92 | 123 | ):
|
93 |
| - return user_token_usage_service.top_users(start_date=start_date, end_date=end_date) |
| 124 | + return user_token_usage_service.top_users(start_date=start_date, end_date=end_date) |
0 commit comments