jarvis-ai-assistant 0.1.42__py3-none-any.whl → 0.1.43__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- jarvis/__init__.py +1 -1
- jarvis/__pycache__/__init__.cpython-313.pyc +0 -0
- jarvis/__pycache__/agent.cpython-313.pyc +0 -0
- jarvis/__pycache__/main.cpython-313.pyc +0 -0
- jarvis/agent.py +1 -1
- jarvis/main.py +1 -1
- jarvis/models/__pycache__/ai8.cpython-313.pyc +0 -0
- jarvis/models/__pycache__/base.cpython-313.pyc +0 -0
- jarvis/models/__pycache__/kimi.cpython-313.pyc +0 -0
- jarvis/models/__pycache__/openai.cpython-313.pyc +0 -0
- jarvis/models/__pycache__/oyi.cpython-313.pyc +0 -0
- jarvis/models/__pycache__/registry.cpython-313.pyc +0 -0
- jarvis/models/ai8.py +9 -5
- jarvis/models/base.py +4 -1
- jarvis/models/kimi.py +4 -0
- jarvis/models/openai.py +8 -4
- jarvis/models/oyi.py +9 -5
- jarvis/models/registry.py +8 -4
- jarvis/tools/__pycache__/generator.cpython-313.pyc +0 -0
- jarvis/tools/generator.py +6 -1
- {jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/RECORD +26 -26
- {jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/top_level.txt +0 -0
jarvis/__init__.py
CHANGED
Binary file
|
Binary file
|
Binary file
|
jarvis/agent.py
CHANGED
@@ -20,7 +20,7 @@ class Agent:
|
|
20
20
|
name: Agent名称,默认为"Jarvis"
|
21
21
|
is_sub_agent: 是否为子Agent,默认为False
|
22
22
|
"""
|
23
|
-
self.model = PlatformRegistry.
|
23
|
+
self.model = PlatformRegistry.get_global_platform()
|
24
24
|
self.tool_registry = ToolRegistry.get_global_tool_registry()
|
25
25
|
self.name = name
|
26
26
|
self.is_sub_agent = is_sub_agent
|
jarvis/main.py
CHANGED
@@ -114,7 +114,7 @@ def main():
|
|
114
114
|
PrettyOutput.print("未指定AI平台,请使用 -p 参数或者设置 JARVIS_PLATFORM 环境变量", OutputType.ERROR)
|
115
115
|
return 1
|
116
116
|
|
117
|
-
PlatformRegistry.
|
117
|
+
PlatformRegistry.get_global_platform_registry().set_global_platform_name(platform)
|
118
118
|
|
119
119
|
try:
|
120
120
|
# 获取全局模型实例
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
jarvis/models/ai8.py
CHANGED
@@ -62,11 +62,15 @@ class AI8Model(BasePlatform):
|
|
62
62
|
self.system_message = ""
|
63
63
|
self.conversation = None
|
64
64
|
self.files = []
|
65
|
-
self.
|
65
|
+
self.model_name = os.getenv("AI8_MODEL") or "deepseek-chat"
|
66
66
|
self.token = os.getenv("AI8_API_KEY")
|
67
|
-
if not all([self.
|
67
|
+
if not all([self.model_name, self.token]):
|
68
68
|
raise Exception("AI8_MODEL or AI8_API_KEY is not set")
|
69
|
-
PrettyOutput.print(f"当前使用模型: {self.
|
69
|
+
PrettyOutput.print(f"当前使用模型: {self.model_name}", OutputType.SYSTEM)
|
70
|
+
|
71
|
+
def set_model_name(self, model_name: str):
|
72
|
+
"""设置模型名称"""
|
73
|
+
self.model_name = model_name
|
70
74
|
|
71
75
|
def create_conversation(self) -> bool:
|
72
76
|
"""Create a new conversation"""
|
@@ -102,7 +106,7 @@ class AI8Model(BasePlatform):
|
|
102
106
|
# 2. 更新会话设置
|
103
107
|
session_data = {
|
104
108
|
**self.conversation,
|
105
|
-
"model": self.
|
109
|
+
"model": self.model_name,
|
106
110
|
"contextCount": 1024,
|
107
111
|
"prompt": self.system_message,
|
108
112
|
"plugins": ["tavily_search"],
|
@@ -228,7 +232,7 @@ class AI8Model(BasePlatform):
|
|
228
232
|
|
229
233
|
def name(self) -> str:
|
230
234
|
"""Return model name"""
|
231
|
-
return self.
|
235
|
+
return self.model_name
|
232
236
|
|
233
237
|
def reset(self):
|
234
238
|
"""Reset model state"""
|
jarvis/models/base.py
CHANGED
@@ -9,8 +9,11 @@ class BasePlatform(ABC):
|
|
9
9
|
def __init__(self):
|
10
10
|
"""初始化模型"""
|
11
11
|
pass
|
12
|
+
|
13
|
+
def set_model_name(self, model_name: str):
|
14
|
+
"""设置模型名称"""
|
15
|
+
raise NotImplementedError("set_model_name is not implemented")
|
12
16
|
|
13
|
-
|
14
17
|
@abstractmethod
|
15
18
|
def chat(self, message: str) -> str:
|
16
19
|
"""执行对话"""
|
jarvis/models/kimi.py
CHANGED
jarvis/models/openai.py
CHANGED
@@ -30,9 +30,9 @@ class OpenAIModel(BasePlatform):
|
|
30
30
|
raise Exception("OPENAI_API_KEY is not set")
|
31
31
|
|
32
32
|
self.base_url = os.getenv("OPENAI_API_BASE", "https://api.deepseek.com")
|
33
|
-
self.
|
33
|
+
self.model_name = os.getenv("OPENAI_MODEL_NAME", "deepseek-chat")
|
34
34
|
|
35
|
-
PrettyOutput.print(f"当前使用模型: {self.
|
35
|
+
PrettyOutput.print(f"当前使用模型: {self.model_name}", OutputType.SYSTEM)
|
36
36
|
|
37
37
|
self.client = OpenAI(
|
38
38
|
api_key=self.api_key,
|
@@ -41,6 +41,10 @@ class OpenAIModel(BasePlatform):
|
|
41
41
|
self.messages: List[Dict[str, str]] = []
|
42
42
|
self.system_message = ""
|
43
43
|
|
44
|
+
def set_model_name(self, model_name: str):
|
45
|
+
"""设置模型名称"""
|
46
|
+
self.model_name = model_name
|
47
|
+
|
44
48
|
def set_system_message(self, message: str):
|
45
49
|
"""设置系统消息"""
|
46
50
|
self.system_message = message
|
@@ -55,7 +59,7 @@ class OpenAIModel(BasePlatform):
|
|
55
59
|
self.messages.append({"role": "user", "content": message})
|
56
60
|
|
57
61
|
response = self.client.chat.completions.create(
|
58
|
-
model=self.
|
62
|
+
model=self.model_name, # 使用配置的模型名称
|
59
63
|
messages=self.messages,
|
60
64
|
stream=True
|
61
65
|
)
|
@@ -82,7 +86,7 @@ class OpenAIModel(BasePlatform):
|
|
82
86
|
|
83
87
|
def name(self) -> str:
|
84
88
|
"""返回模型名称"""
|
85
|
-
return self.
|
89
|
+
return self.model_name
|
86
90
|
|
87
91
|
def reset(self):
|
88
92
|
"""重置模型状态"""
|
jarvis/models/oyi.py
CHANGED
@@ -47,11 +47,15 @@ class OyiModel(BasePlatform):
|
|
47
47
|
self.conversation = None
|
48
48
|
self.upload_files = []
|
49
49
|
self.first_chat = True
|
50
|
-
self.
|
50
|
+
self.model_name = os.getenv("OYI_MODEL") or "deepseek-chat"
|
51
51
|
self.token = os.getenv("OYI_API_KEY")
|
52
|
-
if not all([self.
|
52
|
+
if not all([self.model_name, self.token]):
|
53
53
|
raise Exception("OYI_MODEL or OYI_API_KEY is not set")
|
54
|
-
PrettyOutput.print(f"当前使用模型: {self.
|
54
|
+
PrettyOutput.print(f"当前使用模型: {self.model_name}", OutputType.SYSTEM)
|
55
|
+
|
56
|
+
def set_model_name(self, model_name: str):
|
57
|
+
"""设置模型名称"""
|
58
|
+
self.model_name = model_name
|
55
59
|
|
56
60
|
|
57
61
|
def create_conversation(self) -> bool:
|
@@ -71,7 +75,7 @@ class OyiModel(BasePlatform):
|
|
71
75
|
"isLock": False,
|
72
76
|
"systemMessage": "",
|
73
77
|
"params": json.dumps({
|
74
|
-
"model": self.
|
78
|
+
"model": self.model_name,
|
75
79
|
"is_webSearch": True,
|
76
80
|
"message": [],
|
77
81
|
"systemMessage": None,
|
@@ -202,7 +206,7 @@ class OyiModel(BasePlatform):
|
|
202
206
|
|
203
207
|
def name(self) -> str:
|
204
208
|
"""Return model name"""
|
205
|
-
return self.
|
209
|
+
return self.model_name
|
206
210
|
|
207
211
|
def reset(self):
|
208
212
|
"""Reset model state"""
|
jarvis/models/registry.py
CHANGED
@@ -130,7 +130,7 @@ class PlatformRegistry:
|
|
130
130
|
|
131
131
|
|
132
132
|
@staticmethod
|
133
|
-
def
|
133
|
+
def get_global_platform_registry():
|
134
134
|
"""获取全局平台注册器"""
|
135
135
|
if PlatformRegistry.global_platform_registry is None:
|
136
136
|
PlatformRegistry.global_platform_registry = PlatformRegistry()
|
@@ -152,9 +152,9 @@ class PlatformRegistry:
|
|
152
152
|
self.platforms: Dict[str, Type[BasePlatform]] = {}
|
153
153
|
|
154
154
|
@staticmethod
|
155
|
-
def
|
155
|
+
def get_global_platform() -> BasePlatform:
|
156
156
|
"""获取全局平台实例"""
|
157
|
-
platform = PlatformRegistry.
|
157
|
+
platform = PlatformRegistry.get_global_platform_registry().create_platform(PlatformRegistry.global_platform_name)
|
158
158
|
if not platform:
|
159
159
|
raise Exception(f"Failed to create platform: {PlatformRegistry.global_platform_name}")
|
160
160
|
return platform
|
@@ -194,6 +194,10 @@ class PlatformRegistry:
|
|
194
194
|
"""获取可用平台列表"""
|
195
195
|
return list(self.platforms.keys())
|
196
196
|
|
197
|
-
def
|
197
|
+
def set_global_platform_name(self, platform_name: str):
|
198
198
|
"""设置全局平台"""
|
199
199
|
PlatformRegistry.global_platform_name = platform_name
|
200
|
+
|
201
|
+
def get_global_platform_name(self) -> str:
|
202
|
+
"""获取全局平台名称"""
|
203
|
+
return PlatformRegistry.global_platform_name
|
Binary file
|
jarvis/tools/generator.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import os
|
1
2
|
from typing import Dict, Any
|
2
3
|
from pathlib import Path
|
3
4
|
from jarvis.models.registry import PlatformRegistry
|
@@ -41,7 +42,11 @@ class ToolGeneratorTool:
|
|
41
42
|
|
42
43
|
def _generate_tool_code(self, tool_name: str, class_name: str, description: str, parameters: Dict) -> str:
|
43
44
|
"""使用大模型生成工具代码"""
|
44
|
-
|
45
|
+
platform_name = os.getenv("JARVIS_CODEGEN_PLATFORM") or PlatformRegistry.get_global_platform_name()
|
46
|
+
model = PlatformRegistry.create_platform(platform_name)
|
47
|
+
model_name = os.getenv("JARVIS_CODEGEN_MODEL")
|
48
|
+
if model_name:
|
49
|
+
model.set_model_name(model_name)
|
45
50
|
|
46
51
|
prompt = f"""请生成一个Python工具类的代码,要求如下,除了代码,不要输出任何内容:
|
47
52
|
|
@@ -1,32 +1,32 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/agent.py,sha256=
|
3
|
-
jarvis/main.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=OJVxHJQi99bOxMOkdKLvxRutQ_Lc4AyKCH4e-FnQNfw,50
|
2
|
+
jarvis/agent.py,sha256=5GmC9iAOerTR4JoxzrfgLSspoz6qRm1E6xEIWLTR2OI,12222
|
3
|
+
jarvis/main.py,sha256=3kpohHORc13A5RBjTSHYF7cdnc6W15hO23R78Iqnz8w,5843
|
4
4
|
jarvis/utils.py,sha256=JlkuC9RtspXH2VWDmj9nR0vnb8ie1gIsKc4vC7WRco8,7321
|
5
|
-
jarvis/__pycache__/__init__.cpython-313.pyc,sha256=
|
6
|
-
jarvis/__pycache__/agent.cpython-313.pyc,sha256=
|
7
|
-
jarvis/__pycache__/main.cpython-313.pyc,sha256
|
5
|
+
jarvis/__pycache__/__init__.cpython-313.pyc,sha256=FWB9E8zChLF1EI0hTB-cEMjRy5wB24APzutV1cZJLqY,209
|
6
|
+
jarvis/__pycache__/agent.cpython-313.pyc,sha256=H7FXCYJSJm0k062oMVFZx1unUD-khreKrZfaKQ2aJqY,15870
|
7
|
+
jarvis/__pycache__/main.cpython-313.pyc,sha256=-tDMANWAyPk45zx-lnxM1_uxTUzEqrWwcBe2nWtzH2E,8133
|
8
8
|
jarvis/__pycache__/models.cpython-313.pyc,sha256=uWuRIjGrY4YDB3dGW5PGDLWaS03et8g11O725TjY_eU,5960
|
9
9
|
jarvis/__pycache__/tools.cpython-313.pyc,sha256=lAD4LrnnWzNZQmHXGfZ_2l7oskOpr2_2OC-gdFhxQY8,33933
|
10
10
|
jarvis/__pycache__/utils.cpython-313.pyc,sha256=eXXM-V-2ax7qBNxktdUrEIwhAXPQHAlI7gLGewlKOj4,10276
|
11
11
|
jarvis/__pycache__/zte_llm.cpython-313.pyc,sha256=kMm9IGundGmOPqjsgrm9oIaWLDagYGCPRAaE3ipkc-0,5662
|
12
12
|
jarvis/models/__init__.py,sha256=mrOt67nselz_H1gX9wdAO4y2DY5WPXzABqJbr5Des8k,63
|
13
|
-
jarvis/models/ai8.py,sha256=
|
14
|
-
jarvis/models/base.py,sha256=
|
15
|
-
jarvis/models/kimi.py,sha256=
|
16
|
-
jarvis/models/openai.py,sha256=
|
17
|
-
jarvis/models/oyi.py,sha256=
|
18
|
-
jarvis/models/registry.py,sha256=
|
13
|
+
jarvis/models/ai8.py,sha256=d1h3L32QBfyf5iQvyncTo-RfvA-kTDGrL7gtxAL6gDg,11609
|
14
|
+
jarvis/models/base.py,sha256=CMjODEh2c9KbCMfQGF7WgGbn-CfpIaGdA5yK1RxKMLY,1282
|
15
|
+
jarvis/models/kimi.py,sha256=N0bPQ1ugx0RwjR96jLchmOPvCmws-fXyA0mnOAdo2k4,17161
|
16
|
+
jarvis/models/openai.py,sha256=pB7AaZuorHlmudTPaUnEbFOyl51Fy6uhU9KQBm98Ov8,4156
|
17
|
+
jarvis/models/oyi.py,sha256=2-PTdoboHl0Jtn0RrBXC7gSCYbI9_yVUmNDBVYw-U5M,12458
|
18
|
+
jarvis/models/registry.py,sha256=iVBjN9ImEvGHcz8WR-z8pPMJQZI907o_nccVOFANhak,7951
|
19
19
|
jarvis/models/__pycache__/__init__.cpython-313.pyc,sha256=b9Z3owWpzLnKKwqQH6bWHZJZDeThHGD9Oa7TMCpyHwc,224
|
20
|
-
jarvis/models/__pycache__/ai8.cpython-313.pyc,sha256=
|
21
|
-
jarvis/models/__pycache__/base.cpython-313.pyc,sha256=
|
22
|
-
jarvis/models/__pycache__/kimi.cpython-313.pyc,sha256=
|
23
|
-
jarvis/models/__pycache__/openai.cpython-313.pyc,sha256=
|
24
|
-
jarvis/models/__pycache__/oyi.cpython-313.pyc,sha256=
|
25
|
-
jarvis/models/__pycache__/registry.cpython-313.pyc,sha256=
|
20
|
+
jarvis/models/__pycache__/ai8.cpython-313.pyc,sha256=Bu4NXc_CV-GViEL55b0keW6coToPW9aYXhTcOsZIcvg,14972
|
21
|
+
jarvis/models/__pycache__/base.cpython-313.pyc,sha256=Bsu0p7yNCNa4jO-i2A58i3H3xYzxzhtty5BeHAC5lmE,2488
|
22
|
+
jarvis/models/__pycache__/kimi.cpython-313.pyc,sha256=uqDghVAZe5bpw9RtVGoiFd3-hJnIkhbNDaBdrAwiq2w,21662
|
23
|
+
jarvis/models/__pycache__/openai.cpython-313.pyc,sha256=3buu7rqBwDV8mJ4wMff6xy_8pf6XPt2NYTlfIdPpz8M,6384
|
24
|
+
jarvis/models/__pycache__/oyi.cpython-313.pyc,sha256=49JKEc1tGhbdMV0PiBRnGxq4OGAfNnKmozNw87aRmP8,14441
|
25
|
+
jarvis/models/__pycache__/registry.cpython-313.pyc,sha256=iL3zjkiOC-xUnW3SLV_UN1P_CaxS8-RJm5njLZ1z3cg,10384
|
26
26
|
jarvis/tools/__init__.py,sha256=Kj1bKj34lwRDKMKHLOrLyQElf2lHbqA2tDgP359eaDo,71
|
27
27
|
jarvis/tools/base.py,sha256=EGRGbdfbLXDLwtyoWdvp9rlxNX7bzc20t0Vc2VkwIEY,652
|
28
28
|
jarvis/tools/file_ops.py,sha256=h8g0eT9UvlJf4kt0DLXvdSsjcPj7x19lxWdDApeDfpg,3842
|
29
|
-
jarvis/tools/generator.py,sha256=
|
29
|
+
jarvis/tools/generator.py,sha256=vVP3eN5cCDpRXf_fn0skETkPXAW1XZFWx9pt2_ahK48,5999
|
30
30
|
jarvis/tools/methodology.py,sha256=G3cOaHTMujGZBhDLhQEqyCV2NISizO3MXRuho1KfI6Y,5223
|
31
31
|
jarvis/tools/registry.py,sha256=NbH7A4A2lyN2IoyZGFwa5Ghed2dpzbJWCAd1Dg95WBI,7183
|
32
32
|
jarvis/tools/shell.py,sha256=UPKshPyOaUwTngresUw-ot1jHjQIb4wCY5nkJqa38lU,2520
|
@@ -37,7 +37,7 @@ jarvis/tools/__pycache__/bing_search.cpython-313.pyc,sha256=1G_wPbk5wcQYh7H0drLI
|
|
37
37
|
jarvis/tools/__pycache__/calculator.cpython-313.pyc,sha256=C_qwTDGm6gc7QNxtPzPZXyStdKEintJVQIt5NMHQ8oY,4205
|
38
38
|
jarvis/tools/__pycache__/calculator_tool.cpython-313.pyc,sha256=PI4LZNDTPdSe3ffWDRovLZ-r-vF8Kl-n6xdGdFWiBpY,4296
|
39
39
|
jarvis/tools/__pycache__/file_ops.cpython-313.pyc,sha256=qfgRIcO7JFsa_FxOOXV-3pNSnlovZDrcIkZ1WN3pOJI,3773
|
40
|
-
jarvis/tools/__pycache__/generator.cpython-313.pyc,sha256=
|
40
|
+
jarvis/tools/__pycache__/generator.cpython-313.pyc,sha256=KxHCnyEZTUL3pNozcUWhMHG-cq2HAJOvi3cOEVSPX_A,6561
|
41
41
|
jarvis/tools/__pycache__/methodology.cpython-313.pyc,sha256=GWPSF5b0i6gUsgvJgXIkVQHpLRYQ7OzEiTLwe6aAuWU,6226
|
42
42
|
jarvis/tools/__pycache__/python_script.cpython-313.pyc,sha256=8JpryqTovEiTvBlWAK1KjZmPvHUuPc9GT9rTXBEQoJc,6693
|
43
43
|
jarvis/tools/__pycache__/rag.cpython-313.pyc,sha256=JH6-PSZRMKAvTZqCwlRXJGClxYXNMs-vetU0q7hBLz0,6064
|
@@ -49,9 +49,9 @@ jarvis/tools/__pycache__/user_confirmation.cpython-313.pyc,sha256=wK3Ev10lHSUSRv
|
|
49
49
|
jarvis/tools/__pycache__/user_input.cpython-313.pyc,sha256=JjTFOhObKsKF4Pn8KBRuKfV1_Ssj083fjU7Mfc_5z7c,2531
|
50
50
|
jarvis/tools/__pycache__/user_interaction.cpython-313.pyc,sha256=RuVZ-pmiPBDywY3efgXSfohMAciC1avMGPmBK5qlnew,3305
|
51
51
|
jarvis/tools/__pycache__/webpage.cpython-313.pyc,sha256=BjzSfnNzsKCrLETCcWjt32lNDLzwnjqcVGg4JfWd9OM,3008
|
52
|
-
jarvis_ai_assistant-0.1.
|
53
|
-
jarvis_ai_assistant-0.1.
|
54
|
-
jarvis_ai_assistant-0.1.
|
55
|
-
jarvis_ai_assistant-0.1.
|
56
|
-
jarvis_ai_assistant-0.1.
|
57
|
-
jarvis_ai_assistant-0.1.
|
52
|
+
jarvis_ai_assistant-0.1.43.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
53
|
+
jarvis_ai_assistant-0.1.43.dist-info/METADATA,sha256=BolaQ4qPW5JleYCO9bdksEjAEgBVCuJVXIFs6zzlLz8,10015
|
54
|
+
jarvis_ai_assistant-0.1.43.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
55
|
+
jarvis_ai_assistant-0.1.43.dist-info/entry_points.txt,sha256=iKu7OMfew9dtfGhW71gIMTg4wvafuPqKb4wyQOnMAGU,44
|
56
|
+
jarvis_ai_assistant-0.1.43.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
57
|
+
jarvis_ai_assistant-0.1.43.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{jarvis_ai_assistant-0.1.42.dist-info → jarvis_ai_assistant-0.1.43.dist-info}/entry_points.txt
RENAMED
File without changes
|
File without changes
|