jarvis-ai-assistant 0.1.42__py3-none-any.whl → 0.1.43__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.
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,,