aistv 1.3.2__py3-none-any.whl → 1.3.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
aistv/core.py
CHANGED
@@ -17,19 +17,52 @@ import requests
|
|
17
17
|
from groq import Groq
|
18
18
|
|
19
19
|
DB_FILE = "usage.db"
|
20
|
-
MAX_REQUESTS_PER_DAY = 20
|
21
20
|
SPAM_DELAY_SECONDS = 5
|
21
|
+
|
22
|
+
# Giới hạn theo loại token
|
23
|
+
FREE_MAX_REQUESTS = 20
|
24
|
+
NORMAL_MAX_REQUESTS = 30
|
25
|
+
VIP_MAX_REQUESTS = None # Không giới hạn
|
26
|
+
|
27
|
+
# Ví dụ token thường và token VIP bạn quản lý
|
28
|
+
TOKEN_VIP_SET = {
|
29
|
+
"aistv",
|
30
|
+
"phuc",
|
31
|
+
}
|
32
|
+
|
33
|
+
TOKEN_NORMAL_SET = {
|
34
|
+
"aistvgsk_wr9rnhdGCQYCaeAEFQusWGdyb3FYF4LVKrxM0I9JDSGkZIVIymwPgsk_wr9rnhdGCQYCaeAEFQusWGdyb3FYF4LVKrxM0I9JDSGkZIVIymwPgsk_wr9rnhdGCQYCaeAEFQusWGdyb3FYF4LVKrxM0I9JDSGkZIVIymwPgsk_wr9rnhdGCQYCaeAEFQusWGdyb3FYF4LVKrxM0I9JDSGkZIVIymwP",
|
35
|
+
"tokengsk_wr9rnhdGCQYCaeAEFQusWGdyb3FYF4LVKrxM0I9JDSGkZIVIymwP",
|
36
|
+
}
|
37
|
+
|
22
38
|
API_KEY = "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"
|
23
39
|
|
24
40
|
class STVBot:
|
25
|
-
def __init__(self,
|
41
|
+
def __init__(self, token: str = None, system_prompt: str = None):
|
42
|
+
"""
|
43
|
+
token: None (free user), or token string (normal or VIP)
|
44
|
+
"""
|
26
45
|
if not system_prompt:
|
27
46
|
system_prompt = "Tôi là AI STV, được phát triển bởi Trọng Phúc."
|
28
47
|
self.client = Groq(api_key=API_KEY)
|
29
48
|
self.system_prompt = system_prompt
|
30
49
|
self.model = "meta-llama/llama-4-maverick-17b-128e-instruct"
|
31
50
|
self.history = [{"role": "system", "content": self.system_prompt}]
|
32
|
-
|
51
|
+
|
52
|
+
self.token = token
|
53
|
+
if token is None:
|
54
|
+
self.max_requests = FREE_MAX_REQUESTS
|
55
|
+
self.user_id = "free_user"
|
56
|
+
elif token in TOKEN_VIP_SET:
|
57
|
+
self.max_requests = VIP_MAX_REQUESTS
|
58
|
+
self.user_id = token
|
59
|
+
elif token in TOKEN_NORMAL_SET:
|
60
|
+
self.max_requests = NORMAL_MAX_REQUESTS
|
61
|
+
self.user_id = token
|
62
|
+
else:
|
63
|
+
# Token không hợp lệ tính free
|
64
|
+
self.max_requests = FREE_MAX_REQUESTS
|
65
|
+
self.user_id = "free_user"
|
33
66
|
|
34
67
|
# Kết nối DB SQLite
|
35
68
|
self.conn = sqlite3.connect(DB_FILE, check_same_thread=False)
|
@@ -83,10 +116,10 @@ class STVBot:
|
|
83
116
|
usage["count"] = 0
|
84
117
|
usage["last_date"] = today
|
85
118
|
|
86
|
-
if usage["count"] >=
|
119
|
+
if self.max_requests is not None and usage["count"] >= self.max_requests:
|
87
120
|
return (
|
88
|
-
"⚠️ Bạn đã sử dụng hết giới hạn
|
89
|
-
"Vui lòng thử lại vào ngày mai hoặc liên hệ để được cấp thêm quyền."
|
121
|
+
f"⚠️ Bạn đã sử dụng hết giới hạn {self.max_requests} câu hỏi trong ngày.\n"
|
122
|
+
"Vui lòng thử lại vào ngày mai hoặc liên hệ để được cấp thêm quyền.https://discord.gg/Ze7RTExgdv"
|
90
123
|
)
|
91
124
|
|
92
125
|
if now - usage["last_time"] < SPAM_DELAY_SECONDS:
|
@@ -104,11 +137,12 @@ class STVBot:
|
|
104
137
|
reply = chat_completion.choices[0].message.content
|
105
138
|
self.history.append({"role": "assistant", "content": reply})
|
106
139
|
|
107
|
-
|
108
|
-
|
109
|
-
|
140
|
+
if self.max_requests is not None:
|
141
|
+
usage["count"] += 1
|
142
|
+
usage["last_time"] = now
|
143
|
+
self._save_usage(usage["count"], usage["last_time"], usage["last_date"])
|
110
144
|
|
111
145
|
return reply.strip()
|
112
146
|
|
113
147
|
except Exception as e:
|
114
|
-
return f"⚠️ Lỗi khi: {e}"
|
148
|
+
return f"⚠️ Lỗi khi gọi API: {e}"
|
@@ -0,0 +1,8 @@
|
|
1
|
+
aistv/__init__.py,sha256=G1ZBskWNkKKEK9s51RrBuK-S2_d3Fw8UaLk0RKsbuKw,33
|
2
|
+
aistv/aistv.py,sha256=8OClk7fg1g41NtW7ELj83-g0JF5fV1fQy0dJh2qlV8s,190
|
3
|
+
aistv/core.py,sha256=U76vDxmN2310PCGV5YE8DXhkyutKN-6Dmk8ISHWeLsY,5437
|
4
|
+
aistv/trainer.py,sha256=oqIHGAJAJgIdw3P6_BrnXt3JMXYwsGHfGVaJ_e635YU,1125
|
5
|
+
aistv-1.3.4.dist-info/METADATA,sha256=xk-PfzOHD5PhC_GUDsa1EpM0IXHR_Gn2JgJ6MtXRCg8,4244
|
6
|
+
aistv-1.3.4.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
|
7
|
+
aistv-1.3.4.dist-info/top_level.txt,sha256=P6gyYzXFvBPESQyFZQSi6Rs8v5ALhw-d4UN2Jo9Pkgw,6
|
8
|
+
aistv-1.3.4.dist-info/RECORD,,
|
aistv-1.3.2.dist-info/RECORD
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
aistv/__init__.py,sha256=G1ZBskWNkKKEK9s51RrBuK-S2_d3Fw8UaLk0RKsbuKw,33
|
2
|
-
aistv/aistv.py,sha256=8OClk7fg1g41NtW7ELj83-g0JF5fV1fQy0dJh2qlV8s,190
|
3
|
-
aistv/core.py,sha256=DxOgKiRzBBabccLnDqZXwWUEQIn74J-AO_5EwEvIO2Q,4129
|
4
|
-
aistv/trainer.py,sha256=oqIHGAJAJgIdw3P6_BrnXt3JMXYwsGHfGVaJ_e635YU,1125
|
5
|
-
aistv-1.3.2.dist-info/METADATA,sha256=iBLrsJMaCZZB26NSoezElgxGO1rN2UyOrCPJhE6Tu-Q,4244
|
6
|
-
aistv-1.3.2.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
|
7
|
-
aistv-1.3.2.dist-info/top_level.txt,sha256=P6gyYzXFvBPESQyFZQSi6Rs8v5ALhw-d4UN2Jo9Pkgw,6
|
8
|
-
aistv-1.3.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|