jarvis-ai-assistant 0.1.90__tar.gz → 0.1.91__tar.gz

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.

Potentially problematic release.


This version of jarvis-ai-assistant might be problematic. Click here for more details.

Files changed (48) hide show
  1. {jarvis_ai_assistant-0.1.90/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.91}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_smart_shell/main.py +0 -6
  6. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/openai.py +6 -2
  7. jarvis_ai_assistant-0.1.91/src/jarvis/tools/thinker.py +203 -0
  8. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  9. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +1 -0
  10. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/LICENSE +0 -0
  11. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/MANIFEST.in +0 -0
  12. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/README.md +0 -0
  13. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/setup.cfg +0 -0
  14. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/agent.py +0 -0
  15. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_codebase/__init__.py +0 -0
  16. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_codebase/main.py +0 -0
  17. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_platform/__init__.py +0 -0
  18. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_platform/main.py +0 -0
  19. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_rag/__init__.py +0 -0
  20. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_rag/main.py +0 -0
  21. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  22. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/main.py +0 -0
  23. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/__init__.py +0 -0
  24. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/ai8.py +0 -0
  25. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/base.py +0 -0
  26. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/kimi.py +0 -0
  27. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/ollama.py +0 -0
  28. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/oyi.py +0 -0
  29. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/models/registry.py +0 -0
  30. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/__init__.py +0 -0
  31. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/ask_user.py +0 -0
  32. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/base.py +0 -0
  33. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/chdir.py +0 -0
  34. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/codebase_qa.py +0 -0
  35. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/file_ops.py +0 -0
  36. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/generator.py +0 -0
  37. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/methodology.py +0 -0
  38. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/rag.py +0 -0
  39. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/registry.py +0 -0
  40. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/search.py +0 -0
  41. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/shell.py +0 -0
  42. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/sub_agent.py +0 -0
  43. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/tools/webpage.py +0 -0
  44. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis/utils.py +0 -0
  45. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  46. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  47. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  48. {jarvis_ai_assistant-0.1.90 → jarvis_ai_assistant-0.1.91}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.90
3
+ Version: 0.1.91
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "0.1.90"
7
+ version = "0.1.91"
8
8
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Your Name", email = "your.email@example.com" }]
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="jarvis-ai-assistant",
5
- version="0.1.90",
5
+ version="0.1.91",
6
6
  author="skyfire",
7
7
  author_email="skyfireitdiy@hotmail.com",
8
8
  description="An AI assistant that uses various tools to interact with the system",
@@ -1,3 +1,3 @@
1
1
  """Jarvis AI Assistant"""
2
2
 
3
- __version__ = "0.1.90"
3
+ __version__ = "0.1.91"
@@ -55,12 +55,6 @@ def process_request(request: str) -> Optional[str]:
55
55
  4. 不要添加任何换行或额外空格
56
56
  5. 如果需要多个命令,使用 && 连接
57
57
 
58
- 安全要求:
59
- - 生成的命令必须是安全的,不能包含危险操作
60
- - 如果需要sudo权限,要明确提示用户
61
- - 对于复杂操作,优先使用管道而不是临时文件
62
- - 确保命令的可移植性,优先使用通用的POSIX命令
63
-
64
58
  示例输入:
65
59
  "查找当前目录下的所有Python文件"
66
60
 
@@ -8,6 +8,10 @@ class OpenAIModel(BasePlatform):
8
8
  """DeepSeek模型实现"""
9
9
 
10
10
  platform_name = "openai"
11
+
12
+ def upload_files(self, file_list: List[str]):
13
+ """上传文件"""
14
+ PrettyOutput.print("OpenAI 不支持上传文件", OutputType.WARNING)
11
15
 
12
16
  def __init__(self):
13
17
  """
@@ -19,7 +23,7 @@ class OpenAIModel(BasePlatform):
19
23
  if not self.api_key:
20
24
  PrettyOutput.print("\n需要设置以下环境变量才能使用 OpenAI 模型:", OutputType.INFO)
21
25
  PrettyOutput.print(" • OPENAI_API_KEY: API 密钥", OutputType.INFO)
22
- PrettyOutput.print(" • OPENAI_API_BASE: (可选) API 基础地址,默认使用 https://api.openai.com", OutputType.INFO)
26
+ PrettyOutput.print(" • OPENAI_API_BASE: (可选) API 基础地址,默认使用 https://api.openai.com/v1", OutputType.INFO)
23
27
  PrettyOutput.print("\n可以通过以下方式设置:", OutputType.INFO)
24
28
  PrettyOutput.print("1. 创建或编辑 ~/.jarvis_env 文件:", OutputType.INFO)
25
29
  PrettyOutput.print(" OPENAI_API_KEY=your_api_key", OutputType.INFO)
@@ -31,7 +35,7 @@ class OpenAIModel(BasePlatform):
31
35
  PrettyOutput.print(" export OPENAI_MODEL_NAME=your_model_name", OutputType.INFO)
32
36
  PrettyOutput.print("OPENAI_API_KEY未设置", OutputType.WARNING)
33
37
 
34
- self.base_url = os.getenv("OPENAI_API_BASE", "https://api.openai.com")
38
+ self.base_url = os.getenv("OPENAI_API_BASE", "https://api.openai.com/v1")
35
39
  self.model_name = os.getenv("JARVIS_MODEL") or "gpt-4o"
36
40
 
37
41
 
@@ -0,0 +1,203 @@
1
+ from typing import Dict, Any
2
+ from jarvis.utils import OutputType, PrettyOutput, load_env_from_file
3
+ from jarvis.models.registry import PlatformRegistry
4
+
5
+ class ThinkerTool:
6
+ name = "thinker"
7
+ description = "使用思维链推理方式分析复杂问题,适用于需要多步推理、逻辑分析或创造性思考的场景"
8
+ parameters = {
9
+ "type": "object",
10
+ "properties": {
11
+ "question": {
12
+ "type": "string",
13
+ "description": "需要分析的问题或任务"
14
+ },
15
+ "context": {
16
+ "type": "string",
17
+ "description": "问题相关的上下文信息或背景知识",
18
+ "default": ""
19
+ },
20
+ "approach": {
21
+ "type": "string",
22
+ "enum": ["chain_of_thought", "tree_of_thought", "step_by_step"],
23
+ "description": "思考方式:chain_of_thought(思维链)、tree_of_thought(思维树)、step_by_step(步骤分解)",
24
+ "default": "chain_of_thought"
25
+ }
26
+ },
27
+ "required": ["question"]
28
+ }
29
+
30
+ def __init__(self):
31
+ """初始化思考工具"""
32
+ self.model = PlatformRegistry.get_global_platform_registry().get_thinking_platform()
33
+
34
+ def _generate_prompt(self, question: str, context: str, approach: str) -> str:
35
+ """生成提示词
36
+
37
+ Args:
38
+ question: 问题
39
+ context: 上下文
40
+ approach: 思考方式
41
+
42
+ Returns:
43
+ str: 完整的提示词
44
+ """
45
+ # 基础提示词
46
+ base_prompt = "你是一个擅长深度思考和逻辑推理的助手。"
47
+
48
+ # 根据不同的思考方式添加具体指导
49
+ approach_prompts = {
50
+ "chain_of_thought": """请使用思维链方式分析问题:
51
+ 1. 仔细阅读问题和上下文
52
+ 2. 逐步推理,每一步都要说明推理依据
53
+ 3. 考虑多个可能的角度
54
+ 4. 得出最终结论
55
+
56
+ 请按以下格式输出:
57
+ 思考过程:
58
+ 1. [第一步推理]
59
+ 2. [第二步推理]
60
+ ...
61
+
62
+ 结论:
63
+ [最终结论]""",
64
+
65
+ "tree_of_thought": """请使用思维树方式分析问题:
66
+ 1. 将问题分解为多个子问题
67
+ 2. 对每个子问题进行分支探索
68
+ 3. 评估每个分支的可行性
69
+ 4. 整合最优路径
70
+
71
+ 请按以下格式输出:
72
+ 问题分解:
73
+ - 子问题1
74
+ - 分支1.1
75
+ - 分支1.2
76
+ - 子问题2
77
+ - 分支2.1
78
+ - 分支2.2
79
+
80
+ 分析过程:
81
+ [详细分析每个分支]
82
+
83
+ 最优路径:
84
+ [说明选择原因]
85
+
86
+ 结论:
87
+ [最终结论]""",
88
+
89
+ "step_by_step": """请使用步骤分解方式分析问题:
90
+ 1. 将问题分解为具体步骤
91
+ 2. 详细说明每个步骤的执行方法
92
+ 3. 考虑每个步骤可能的问题
93
+ 4. 提供完整的解决方案
94
+
95
+ 请按以下格式输出:
96
+ 步骤分解:
97
+ 步骤1: [具体内容]
98
+ 步骤2: [具体内容]
99
+ ...
100
+
101
+ 执行分析:
102
+ [详细分析每个步骤]
103
+
104
+ 解决方案:
105
+ [完整方案]"""
106
+ }
107
+
108
+ # 构建完整提示词
109
+ prompt = f"""{base_prompt}
110
+
111
+ {approach_prompts[approach]}
112
+
113
+ 问题:
114
+ {question}
115
+
116
+ """
117
+ # 如果有上下文,添加到提示词中
118
+ if context:
119
+ prompt += f"""
120
+ 相关上下文:
121
+ {context}
122
+ """
123
+
124
+ prompt += "\n请开始分析:"
125
+ return prompt
126
+
127
+ def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
128
+ """执行思考分析
129
+
130
+ Args:
131
+ args: 包含参数的字典
132
+ - question: 问题
133
+ - context: 上下文(可选)
134
+ - approach: 思考方式(可选)
135
+
136
+ Returns:
137
+ Dict[str, Any]: 执行结果
138
+ """
139
+ try:
140
+ # 获取参数
141
+ question = args["question"]
142
+ context = args.get("context", "")
143
+ approach = args.get("approach", "chain_of_thought")
144
+
145
+ # 生成提示词
146
+ prompt = self._generate_prompt(question, context, approach)
147
+
148
+ # 记录开始分析
149
+ PrettyOutput.print(f"开始分析问题: {question}", OutputType.INFO)
150
+ if context:
151
+ PrettyOutput.print("包含上下文信息", OutputType.INFO)
152
+ PrettyOutput.print(f"使用{approach}方式思考", OutputType.INFO)
153
+
154
+ # 调用模型进行分析
155
+ response = self.model.chat(prompt)
156
+
157
+ if not response:
158
+ return {
159
+ "success": False,
160
+ "error": "未能获得有效的分析结果"
161
+ }
162
+
163
+ return {
164
+ "success": True,
165
+ "stdout": response,
166
+ "stderr": ""
167
+ }
168
+
169
+ except Exception as e:
170
+ PrettyOutput.print(f"思考分析失败: {str(e)}", OutputType.ERROR)
171
+ return {
172
+ "success": False,
173
+ "error": f"执行失败: {str(e)}"
174
+ }
175
+
176
+ def main():
177
+ """命令行直接运行工具"""
178
+ import argparse
179
+
180
+ load_env_from_file()
181
+
182
+ parser = argparse.ArgumentParser(description='深度思考分析工具')
183
+ parser.add_argument('--question', required=True, help='需要分析的问题')
184
+ parser.add_argument('--context', help='问题相关的上下文信息')
185
+ parser.add_argument('--approach', choices=['chain_of_thought', 'tree_of_thought', 'step_by_step'],
186
+ default='chain_of_thought', help='思考方式')
187
+ args = parser.parse_args()
188
+
189
+ tool = ThinkerTool()
190
+ result = tool.execute({
191
+ "question": args.question,
192
+ "context": args.context,
193
+ "approach": args.approach
194
+ })
195
+
196
+ if result["success"]:
197
+ PrettyOutput.print("\n分析结果:", OutputType.INFO)
198
+ PrettyOutput.print(result["stdout"], OutputType.INFO)
199
+ else:
200
+ PrettyOutput.print(result["error"], OutputType.ERROR)
201
+
202
+ if __name__ == "__main__":
203
+ main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.90
3
+ Version: 0.1.91
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
@@ -36,6 +36,7 @@ src/jarvis/tools/registry.py
36
36
  src/jarvis/tools/search.py
37
37
  src/jarvis/tools/shell.py
38
38
  src/jarvis/tools/sub_agent.py
39
+ src/jarvis/tools/thinker.py
39
40
  src/jarvis/tools/webpage.py
40
41
  src/jarvis_ai_assistant.egg-info/PKG-INFO
41
42
  src/jarvis_ai_assistant.egg-info/SOURCES.txt