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 CHANGED
@@ -1,3 +1,3 @@
1
1
  """Jarvis AI Assistant"""
2
2
 
3
- __version__ = "0.1.42"
3
+ __version__ = "0.1.43"
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.get_platform()
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.get_platform_registry().set_global_platform(platform)
117
+ PlatformRegistry.get_global_platform_registry().set_global_platform_name(platform)
118
118
 
119
119
  try:
120
120
  # 获取全局模型实例
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.model = os.getenv("AI8_MODEL") or "deepseek-chat"
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.model, self.token]):
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.model}", OutputType.SYSTEM)
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.model,
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.model
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
@@ -45,6 +45,10 @@ class KimiModel(BasePlatform):
45
45
  """设置系统消息"""
46
46
  self.system_message = message
47
47
 
48
+ def set_model_name(self, model_name: str):
49
+ """设置模型名称"""
50
+ pass
51
+
48
52
  def _create_chat(self) -> bool:
49
53
  """创建新的对话会话"""
50
54
  url = "https://kimi.moonshot.cn/api/chat"
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.model = os.getenv("OPENAI_MODEL_NAME", "deepseek-chat")
33
+ self.model_name = os.getenv("OPENAI_MODEL_NAME", "deepseek-chat")
34
34
 
35
- PrettyOutput.print(f"当前使用模型: {self.model}", OutputType.SYSTEM)
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.model, # 使用配置的模型名称
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.model
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.model = os.getenv("OYI_MODEL") or "deepseek-chat"
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.model, self.token]):
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.model}", OutputType.SYSTEM)
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.model,
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.model
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 get_platform_registry():
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 get_platform() -> BasePlatform:
155
+ def get_global_platform() -> BasePlatform:
156
156
  """获取全局平台实例"""
157
- platform = PlatformRegistry.get_platform_registry().create_platform(PlatformRegistry.global_platform_name)
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 set_global_platform(self, platform_name: str):
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
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
- model = PlatformRegistry.get_platform()
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,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.42
3
+ Version: 0.1.43
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis
6
6
  Author: skyfire
@@ -1,32 +1,32 @@
1
- jarvis/__init__.py,sha256=reJZgg3xnrq70dlR2vezFlcaoE7Jp3x5XPYaNTXTUcU,50
2
- jarvis/agent.py,sha256=X9-vfGsEVAgJ5EoS7cctfvfNxQyan3OFRdReKlHc-ro,12215
3
- jarvis/main.py,sha256=69HjqIUf1SNXNnrWQffN3XAnAAgiNpTNwbOZolNRHdQ,5831
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=mXb2FNtTXbPBTp5kdbV41lHYlIU96mTuLqD1p7PYMaU,209
6
- jarvis/__pycache__/agent.cpython-313.pyc,sha256=bG6QMODz8G5hxIxKusjQFXS5JZGAWJYqhHmUjsB2jro,15863
7
- jarvis/__pycache__/main.cpython-313.pyc,sha256=PCIqdoAHPetp3Enxqgpeo9AjOX8ViWi2Al3oiBRhqL0,8121
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=OVBsRuxtttpkGHWe4N1lXoOqDcUMtvyHAxKSN7DzMxI,11466
14
- jarvis/models/base.py,sha256=kLeT1ajmyMRTAtYDa_XDhS319BapQTmm0cfXzda2AxQ,1135
15
- jarvis/models/kimi.py,sha256=IsX0d5DcdpUFbXBQi6K-V5SYD8UdPykh_WXDxYbxOJw,17067
16
- jarvis/models/openai.py,sha256=M5WKBFCfKXGUYGyvK03NIcslHl9H7eKd-sd_R9bnGqw,4018
17
- jarvis/models/oyi.py,sha256=jTwtrnPF2_vMVBsxdtw7tjWqJWfB1r7rSwfzl2oZj6A,12315
18
- jarvis/models/registry.py,sha256=imV-P-i8NgPSHFbAwp0ERRNg8b1D8aF2yy-CS5uFDuU,7785
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=0pQRw9zxJtEISdOU62LucLUFYgq6aOCmHtutcQnz9cU,14769
21
- jarvis/models/__pycache__/base.cpython-313.pyc,sha256=7FnbUVRV2M9JTUYBk0VaCEkBTuc6ykWbB6MgCxIYTH4,2231
22
- jarvis/models/__pycache__/kimi.cpython-313.pyc,sha256=r1kKcog7gGtnOQ_XbZ3cEvE-zeRF9Shpq5a-B-ntYSc,21473
23
- jarvis/models/__pycache__/openai.cpython-313.pyc,sha256=EkUONtkFt5gytqondwWrtAeCruEoSNytVRtT1zG-DBU,6178
24
- jarvis/models/__pycache__/oyi.cpython-313.pyc,sha256=LKcD5gx8TTY0CXYzMeMSYHJH6CuLb4UcjzRo0rMbvbg,14238
25
- jarvis/models/__pycache__/registry.cpython-313.pyc,sha256=ID2xq5EO2ZbZTvNKi4sqkLXpgxO7xTzfgTdo2GsLLes,10106
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=eboA5wd5NtbnWlpmKZfc-t8c5T6dvzEqsYiiS1v8tIs,5742
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=6gEf-2nlMX6JLrEpaEPRIcb2daF4FlNAe1k-xlH-sgA,6154
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.42.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
53
- jarvis_ai_assistant-0.1.42.dist-info/METADATA,sha256=qFDHaq08PqwJ8AkhHrP0R_EAwvzHuZtRdqD3g9rxOPk,10015
54
- jarvis_ai_assistant-0.1.42.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
55
- jarvis_ai_assistant-0.1.42.dist-info/entry_points.txt,sha256=iKu7OMfew9dtfGhW71gIMTg4wvafuPqKb4wyQOnMAGU,44
56
- jarvis_ai_assistant-0.1.42.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
57
- jarvis_ai_assistant-0.1.42.dist-info/RECORD,,
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,,