local-deep-research 0.1.21__py3-none-any.whl → 0.1.23__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.
- local_deep_research/defaults/.env.template +11 -0
- local_deep_research/defaults/llm_config.py +12 -1
- {local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/METADATA +1 -8
- {local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/RECORD +8 -7
- {local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/WHEEL +0 -0
- {local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/entry_points.txt +0 -0
- {local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/licenses/LICENSE +0 -0
- {local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
# API Keys
|
2
|
+
# ANTHROPIC_API_KEY=your-api-key-here
|
3
|
+
# OPENAI_API_KEY=your-openai-key-here
|
4
|
+
# SERP_API_KEY=your-api-key-here
|
5
|
+
# GUARDIAN_API_KEY=your-api-key-here
|
6
|
+
# GOOGLE_PSE_API_KEY=your-google-api-key-here
|
7
|
+
# GOOGLE_PSE_ENGINE_ID=your-programmable-search-engine-id-here
|
8
|
+
|
9
|
+
# SearXNG Configuration, add at least SEARXNG_INSTANCE to .env file to use this search engine
|
10
|
+
# SEARXNG_INSTANCE = "http://localhost:8080"
|
11
|
+
# SEARXNG_DELAY = 2.0
|
@@ -57,6 +57,8 @@ def get_llm(model_name=None, temperature=None, provider=None):
|
|
57
57
|
# Handle different providers
|
58
58
|
if provider == "anthropic":
|
59
59
|
api_key = settings.get('ANTHROPIC_API_KEY', '')
|
60
|
+
if not api_key:
|
61
|
+
api_key = os.getenv('ANTHROPIC_API_KEY')
|
60
62
|
if not api_key:
|
61
63
|
logger.warning("ANTHROPIC_API_KEY not found. Falling back to default model.")
|
62
64
|
return get_fallback_model(temperature)
|
@@ -67,6 +69,8 @@ def get_llm(model_name=None, temperature=None, provider=None):
|
|
67
69
|
|
68
70
|
elif provider == "openai":
|
69
71
|
api_key = settings.get('OPENAI_API_KEY', '')
|
72
|
+
if not api_key:
|
73
|
+
api_key = os.getenv('OPENAI_API_KEY')
|
70
74
|
if not api_key:
|
71
75
|
logger.warning("OPENAI_API_KEY not found. Falling back to default model.")
|
72
76
|
return get_fallback_model(temperature)
|
@@ -75,7 +79,8 @@ def get_llm(model_name=None, temperature=None, provider=None):
|
|
75
79
|
|
76
80
|
elif provider == "openai_endpoint":
|
77
81
|
api_key = settings.get('OPENAI_ENDPOINT_API_KEY', '')
|
78
|
-
|
82
|
+
if not api_key:
|
83
|
+
api_key = os.getenv('OPENAI_ENDPOINT_API_KEY')
|
79
84
|
if not api_key:
|
80
85
|
logger.warning("OPENAI_ENDPOINT_API_KEY not found. Falling back to default model.")
|
81
86
|
return get_fallback_model(temperature)
|
@@ -213,6 +218,8 @@ def is_openai_available():
|
|
213
218
|
"""Check if OpenAI is available"""
|
214
219
|
try:
|
215
220
|
api_key = settings.get('OPENAI_API_KEY', '')
|
221
|
+
if not api_key:
|
222
|
+
api_key = os.getenv('OPENAI_API_KEY')
|
216
223
|
return bool(api_key)
|
217
224
|
except:
|
218
225
|
return False
|
@@ -221,6 +228,8 @@ def is_anthropic_available():
|
|
221
228
|
"""Check if Anthropic is available"""
|
222
229
|
try:
|
223
230
|
api_key = settings.get('ANTHROPIC_API_KEY', '')
|
231
|
+
if not api_key:
|
232
|
+
api_key = os.getenv('ANTHROPIC_API_KEY')
|
224
233
|
return bool(api_key)
|
225
234
|
except:
|
226
235
|
return False
|
@@ -229,6 +238,8 @@ def is_openai_endpoint_available():
|
|
229
238
|
"""Check if OpenAI endpoint is available"""
|
230
239
|
try:
|
231
240
|
api_key = settings.get('OPENAI_ENDPOINT_API_KEY', '')
|
241
|
+
if not api_key:
|
242
|
+
api_key = os.getenv('OPENAI_ENDPOINT_API_KEY')
|
232
243
|
return bool(api_key)
|
233
244
|
except:
|
234
245
|
return False
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: local-deep-research
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.23
|
4
4
|
Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
|
5
5
|
Author-email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
|
6
6
|
License: MIT License
|
@@ -106,13 +106,6 @@ ldr # (OR python -m local_deep_research.main)
|
|
106
106
|
Access the web interface at `http://127.0.0.1:5000` in your browser.
|
107
107
|
|
108
108
|
## Features
|
109
|
-
<div align="center">
|
110
|
-
<a href="https://www.youtube.com/watch?v=4tDqV__jzKY">
|
111
|
-
<img src="https://img.youtube.com/vi/4tDqV__jzKY/0.jpg" alt="Local Deep Research">
|
112
|
-
<br>
|
113
|
-
<span>▶️ Watch Video</span>
|
114
|
-
</a>
|
115
|
-
</div>
|
116
109
|
|
117
110
|
- 🔍 **Advanced Research Capabilities**
|
118
111
|
- Automated deep research with intelligent follow-up questions
|
@@ -4,8 +4,9 @@ local_deep_research/config.py,sha256=3g8-QPMrxoIMjHvyjSJBFUELmAIyOQFHApUnd8p50a8
|
|
4
4
|
local_deep_research/main.py,sha256=uQXtGQ6LtZNd5Qw63D5ke4Q_LjYimouWVSUknVsk3JQ,3645
|
5
5
|
local_deep_research/report_generator.py,sha256=EvaArnWirMgg42fMzmZeJczoEYujEbJ2ryHHYuuoXx8,8058
|
6
6
|
local_deep_research/search_system.py,sha256=yY3BEzX68vdtUcYF9h6lC3yVao0YA_NSBj6W3-RwlKk,15459
|
7
|
+
local_deep_research/defaults/.env.template,sha256=U4B_InwGZl4IVuAdbY_u0nKN_akHtebMBwUU_e_eljc,427
|
7
8
|
local_deep_research/defaults/__init__.py,sha256=2Vvlkl-gmP_qPYWegE4JBgummypogl3VXrQ1XzptFDU,1381
|
8
|
-
local_deep_research/defaults/llm_config.py,sha256=
|
9
|
+
local_deep_research/defaults/llm_config.py,sha256=Ql0euemgLw_Uwg5g05sA1SkVzAYK7O_ZAnnBi3rsAi4,10095
|
9
10
|
local_deep_research/defaults/local_collections.toml,sha256=zNa03PVnFrZ757JdZOuW6QDxkOc6ep5tG8baGBrMmXM,1778
|
10
11
|
local_deep_research/defaults/main.toml,sha256=6Lzbc5sVLxMwu83bLBp_tpYOZgmtThCfPL1L42eTGro,1939
|
11
12
|
local_deep_research/defaults/search_engines.toml,sha256=g0-qrw10oMgW74z_lYpPDkGwMje25mvalfY1EJ0nL3g,8134
|
@@ -50,9 +51,9 @@ local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py
|
|
50
51
|
local_deep_research/web_search_engines/engines/search_engine_serpapi.py,sha256=XikEYnM-pAaR70VeAJ28lbqpRzCj4bCA9xY29taTV8g,9215
|
51
52
|
local_deep_research/web_search_engines/engines/search_engine_wayback.py,sha256=astAvSLajDZ6rwgthJ3iBcHSWuDSYPO7uilIxaJhXmU,18132
|
52
53
|
local_deep_research/web_search_engines/engines/search_engine_wikipedia.py,sha256=KSGJECbEcxZpVK-PhYsTCtzedSK0l1AjQmvGtx8KBks,9799
|
53
|
-
local_deep_research-0.1.
|
54
|
-
local_deep_research-0.1.
|
55
|
-
local_deep_research-0.1.
|
56
|
-
local_deep_research-0.1.
|
57
|
-
local_deep_research-0.1.
|
58
|
-
local_deep_research-0.1.
|
54
|
+
local_deep_research-0.1.23.dist-info/licenses/LICENSE,sha256=Qg2CaTdu6SWnSqk1_JtgBPp_Da-LdqJDhT1Vt1MUc5s,1072
|
55
|
+
local_deep_research-0.1.23.dist-info/METADATA,sha256=2QywVLwHQyMbLAekWM2r37YKtXNVRnOdV_eXgE2_Sl0,16181
|
56
|
+
local_deep_research-0.1.23.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
57
|
+
local_deep_research-0.1.23.dist-info/entry_points.txt,sha256=u-Y6Z3MWtR3dmsTDFYhXyfkPv7mALUA7YAnY4Fi1XDs,97
|
58
|
+
local_deep_research-0.1.23.dist-info/top_level.txt,sha256=h6-uVE_wSuLOcoWwT9szhX23mBWufu77MqmM25UfbCY,20
|
59
|
+
local_deep_research-0.1.23.dist-info/RECORD,,
|
File without changes
|
{local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/entry_points.txt
RENAMED
File without changes
|
{local_deep_research-0.1.21.dist-info → local_deep_research-0.1.23.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|