jarvis-ai-assistant 0.1.7__tar.gz → 0.1.9__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.7/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.9}/PKG-INFO +2 -1
  2. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/pyproject.toml +2 -1
  3. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/setup.py +2 -1
  4. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__init__.py +1 -1
  5. jarvis_ai_assistant-0.1.9/src/jarvis/__pycache__/__init__.cpython-313.pyc +0 -0
  6. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/__init__.cpython-313.pyc +0 -0
  7. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/base.cpython-313.pyc +0 -0
  8. jarvis_ai_assistant-0.1.9/src/jarvis/tools/__pycache__/bing_search.cpython-313.pyc +0 -0
  9. jarvis_ai_assistant-0.1.9/src/jarvis/tools/__pycache__/search.cpython-313.pyc +0 -0
  10. jarvis_ai_assistant-0.1.9/src/jarvis/tools/bing_search.py +38 -0
  11. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/search.py +30 -9
  12. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9/src/jarvis_ai_assistant.egg-info}/PKG-INFO +2 -1
  13. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -0
  14. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis_ai_assistant.egg-info/requires.txt +1 -0
  15. jarvis_ai_assistant-0.1.7/src/jarvis/__pycache__/__init__.cpython-313.pyc +0 -0
  16. jarvis_ai_assistant-0.1.7/src/jarvis/tools/__pycache__/search.cpython-313.pyc +0 -0
  17. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/MANIFEST.in +0 -0
  18. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/README.md +0 -0
  19. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/setup.cfg +0 -0
  20. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__pycache__/agent.cpython-313.pyc +0 -0
  21. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__pycache__/main.cpython-313.pyc +0 -0
  22. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__pycache__/models.cpython-313.pyc +0 -0
  23. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__pycache__/tools.cpython-313.pyc +0 -0
  24. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__pycache__/utils.cpython-313.pyc +0 -0
  25. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/__pycache__/zte_llm.cpython-313.pyc +0 -0
  26. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/agent.py +0 -0
  27. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/main.py +0 -0
  28. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/models.py +0 -0
  29. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__init__.py +0 -0
  30. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/file_ops.cpython-313.pyc +0 -0
  31. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/python_script.cpython-313.pyc +0 -0
  32. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/rag.cpython-313.pyc +0 -0
  33. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/shell.cpython-313.pyc +0 -0
  34. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/sub_agent.cpython-313.pyc +0 -0
  35. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/user_confirmation.cpython-313.pyc +0 -0
  36. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/user_input.cpython-313.pyc +0 -0
  37. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/user_interaction.cpython-313.pyc +0 -0
  38. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/__pycache__/webpage.cpython-313.pyc +0 -0
  39. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/base.py +0 -0
  40. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/file_ops.py +0 -0
  41. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/shell.py +0 -0
  42. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/sub_agent.py +0 -0
  43. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/tools/webpage.py +0 -0
  44. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/utils.py +0 -0
  45. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis/zte_llm.py +0 -0
  46. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  47. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  48. {jarvis_ai_assistant-0.1.7 → jarvis_ai_assistant-0.1.9}/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.7
3
+ Version: 0.1.9
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
@@ -23,6 +23,7 @@ Requires-Dist: pyyaml>=5.1
23
23
  Requires-Dist: ollama>=0.1.6
24
24
  Requires-Dist: colorama>=0.4.6
25
25
  Requires-Dist: openai>=1.2.0
26
+ Requires-Dist: playwright>=1.41.1
26
27
  Provides-Extra: dev
27
28
  Requires-Dist: pytest; extra == "dev"
28
29
  Requires-Dist: black; extra == "dev"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "0.1.7"
7
+ version = "0.1.9"
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" }]
@@ -27,6 +27,7 @@ dependencies = [
27
27
  "ollama>=0.1.6",
28
28
  "colorama>=0.4.6",
29
29
  "openai>=1.2.0",
30
+ "playwright>=1.41.1",
30
31
  ]
31
32
  requires-python = ">=3.8"
32
33
 
@@ -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.7",
5
+ version="0.1.9",
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",
@@ -20,6 +20,7 @@ setup(
20
20
  "ollama>=0.1.6",
21
21
  "colorama>=0.4.6",
22
22
  "openai>=1.2.0",
23
+ "playwright>=1.41.1",
23
24
  ],
24
25
  entry_points={
25
26
  "console_scripts": [
@@ -1,3 +1,3 @@
1
1
  """Jarvis AI Assistant"""
2
2
 
3
- __version__ = "0.1.7"
3
+ __version__ = "0.1.9"
@@ -0,0 +1,38 @@
1
+ from playwright.sync_api import sync_playwright
2
+ from urllib.parse import quote
3
+
4
+ def bing_search(query):
5
+ try:
6
+ with sync_playwright() as p:
7
+ browser = p.chromium.launch()
8
+ page = browser.new_page()
9
+ page.goto(
10
+ f"https://www.bing.com/search?form=QBRE&q={quote(query)}&cc=US"
11
+ )
12
+
13
+ page.wait_for_selector("#b_results", timeout=10000)
14
+
15
+ summaries = page.evaluate("""() => {
16
+ const liElements = Array.from(
17
+ document.querySelectorAll("#b_results > .b_algo")
18
+ );
19
+ return liElements.map((li) => {
20
+ const abstractElement = li.querySelector(".b_caption > p");
21
+ const linkElement = li.querySelector("a");
22
+ const href = linkElement.getAttribute("href");
23
+ const title = linkElement.textContent;
24
+ const abstract = abstractElement ? abstractElement.textContent : "";
25
+ return { href, title, abstract };
26
+ });
27
+ }""")
28
+
29
+ browser.close()
30
+ print(summaries)
31
+ return summaries
32
+ except Exception as error:
33
+ print("An error occurred:", error)
34
+
35
+ if __name__ == "__main__":
36
+ # results = bing_search("北京到西雅图的距离")
37
+ results = bing_search("北京到西雅图的距离")
38
+ print(results)
@@ -1,11 +1,12 @@
1
+ import os
1
2
  from typing import Dict, Any, List
2
- from duckduckgo_search import DDGS
3
3
  from ..utils import PrettyOutput, OutputType
4
4
  from .webpage import WebpageTool
5
+ from .bing_search import bing_search
5
6
 
6
7
  class SearchTool:
7
8
  name = "search"
8
- description = "使用DuckDuckGo搜索引擎搜索信息,并根据问题提取关键信息"
9
+ description = "使用Bing搜索引擎搜索信息,并根据问题提取关键信息"
9
10
  parameters = {
10
11
  "type": "object",
11
12
  "properties": {
@@ -31,6 +32,26 @@ class SearchTool:
31
32
  self.model = model
32
33
  self.webpage_tool = WebpageTool()
33
34
 
35
+ def _search(self, query: str, max_results: int) -> List[Dict]:
36
+ """执行搜索请求"""
37
+ try:
38
+ results = bing_search(query)
39
+ if not results:
40
+ return []
41
+
42
+ # 格式化搜索结果
43
+ formatted_results = []
44
+ for result in results[:max_results]:
45
+ formatted_results.append({
46
+ "title": result.get("title", ""),
47
+ "href": result.get("href", ""),
48
+ "body": result.get("abstract", "")
49
+ })
50
+ return formatted_results
51
+ except Exception as e:
52
+ PrettyOutput.print(f"搜索请求失败: {str(e)}", OutputType.ERROR)
53
+ return []
54
+
34
55
  def _extract_info(self, contents: List[str], question: str) -> str:
35
56
  """使用语言模型从网页内容中提取关键信息"""
36
57
  prompt = {
@@ -68,18 +89,18 @@ class SearchTool:
68
89
  PrettyOutput.print(f"相关问题: {question}", OutputType.INFO)
69
90
 
70
91
  # 获取搜索结果
71
- search_results = []
72
- with DDGS() as ddgs:
73
- results = list(ddgs.text(
74
- keywords=query,
75
- max_results=max_results
76
- ))
92
+ results = self._search(query, max_results)
93
+ if not results:
94
+ return {
95
+ "success": False,
96
+ "error": "未能获取任何搜索结果"
97
+ }
77
98
 
78
99
  # 收集网页内容
79
100
  contents = []
80
101
  for i, result in enumerate(results, 1):
81
102
  try:
82
- PrettyOutput.print(f"正在读取第 {i}/{len(results)} 个结果... {result['title']} - {result['href']} - {result['body']}", OutputType.PROGRESS)
103
+ PrettyOutput.print(f"正在读取第 {i}/{len(results)} 个结果... {result['title']} - {result['href']}", OutputType.PROGRESS)
83
104
  webpage_result = self.webpage_tool.execute({"url": result["href"]})
84
105
  if webpage_result["success"]:
85
106
  contents.append(f"\n来源 {i}:{result['href']}\n")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.7
3
+ Version: 0.1.9
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
@@ -23,6 +23,7 @@ Requires-Dist: pyyaml>=5.1
23
23
  Requires-Dist: ollama>=0.1.6
24
24
  Requires-Dist: colorama>=0.4.6
25
25
  Requires-Dist: openai>=1.2.0
26
+ Requires-Dist: playwright>=1.41.1
26
27
  Provides-Extra: dev
27
28
  Requires-Dist: pytest; extra == "dev"
28
29
  Requires-Dist: black; extra == "dev"
@@ -17,6 +17,7 @@ src/jarvis/__pycache__/utils.cpython-313.pyc
17
17
  src/jarvis/__pycache__/zte_llm.cpython-313.pyc
18
18
  src/jarvis/tools/__init__.py
19
19
  src/jarvis/tools/base.py
20
+ src/jarvis/tools/bing_search.py
20
21
  src/jarvis/tools/file_ops.py
21
22
  src/jarvis/tools/search.py
22
23
  src/jarvis/tools/shell.py
@@ -24,6 +25,7 @@ src/jarvis/tools/sub_agent.py
24
25
  src/jarvis/tools/webpage.py
25
26
  src/jarvis/tools/__pycache__/__init__.cpython-313.pyc
26
27
  src/jarvis/tools/__pycache__/base.cpython-313.pyc
28
+ src/jarvis/tools/__pycache__/bing_search.cpython-313.pyc
27
29
  src/jarvis/tools/__pycache__/file_ops.cpython-313.pyc
28
30
  src/jarvis/tools/__pycache__/python_script.cpython-313.pyc
29
31
  src/jarvis/tools/__pycache__/rag.cpython-313.pyc
@@ -5,6 +5,7 @@ pyyaml>=5.1
5
5
  ollama>=0.1.6
6
6
  colorama>=0.4.6
7
7
  openai>=1.2.0
8
+ playwright>=1.41.1
8
9
 
9
10
  [dev]
10
11
  pytest