nosible 0.2.8__tar.gz → 0.2.10__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.
Files changed (29) hide show
  1. nosible-0.2.10/PKG-INFO +165 -0
  2. nosible-0.2.10/README.md +122 -0
  3. {nosible-0.2.8 → nosible-0.2.10}/pyproject.toml +1 -1
  4. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/result_set.py +0 -6
  5. nosible-0.2.10/src/nosible.egg-info/PKG-INFO +165 -0
  6. nosible-0.2.8/PKG-INFO +0 -384
  7. nosible-0.2.8/README.md +0 -341
  8. nosible-0.2.8/src/nosible.egg-info/PKG-INFO +0 -384
  9. {nosible-0.2.8 → nosible-0.2.10}/LICENSE +0 -0
  10. {nosible-0.2.8 → nosible-0.2.10}/setup.cfg +0 -0
  11. {nosible-0.2.8 → nosible-0.2.10}/setup.py +0 -0
  12. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/__init__.py +0 -0
  13. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/result.py +0 -0
  14. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/search.py +0 -0
  15. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/search_set.py +0 -0
  16. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/snippet.py +0 -0
  17. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/snippet_set.py +0 -0
  18. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/classes/web_page.py +0 -0
  19. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/nosible_client.py +0 -0
  20. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/utils/json_tools.py +0 -0
  21. {nosible-0.2.8 → nosible-0.2.10}/src/nosible/utils/rate_limiter.py +0 -0
  22. {nosible-0.2.8 → nosible-0.2.10}/src/nosible.egg-info/SOURCES.txt +0 -0
  23. {nosible-0.2.8 → nosible-0.2.10}/src/nosible.egg-info/dependency_links.txt +0 -0
  24. {nosible-0.2.8 → nosible-0.2.10}/src/nosible.egg-info/requires.txt +0 -0
  25. {nosible-0.2.8 → nosible-0.2.10}/src/nosible.egg-info/top_level.txt +0 -0
  26. {nosible-0.2.8 → nosible-0.2.10}/tests/test_01_nosible.py +0 -0
  27. {nosible-0.2.8 → nosible-0.2.10}/tests/test_02_results.py +0 -0
  28. {nosible-0.2.8 → nosible-0.2.10}/tests/test_03_search_searchset.py +0 -0
  29. {nosible-0.2.8 → nosible-0.2.10}/tests/test_04_snippets.py +0 -0
@@ -0,0 +1,165 @@
1
+ Metadata-Version: 2.4
2
+ Name: nosible
3
+ Version: 0.2.10
4
+ Summary: Python client for the NOSIBLE Search API
5
+ Home-page: https://github.com/NosibleAI/nosible
6
+ Author: Stuart Reid, Matthew Dicks, Richard Taylor, Gareth Warburton
7
+ Author-email: Stuart Reid <stuart@nosible.com>, Matthew Dicks <matthew@nosible.com>, Richard Taylor <richard@nosible.com>, Gareth Warburton <gareth@nosible.com>
8
+ License-Expression: MIT
9
+ Project-URL: Homepage, https://github.com/NosibleAI/nosible
10
+ Project-URL: Documentation, https://nosible-py.readthedocs.io/en/latest/
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Topic :: Software Development :: Libraries
16
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
17
+ Classifier: Intended Audience :: Information Technology
18
+ Classifier: Intended Audience :: Science/Research
19
+ Classifier: Intended Audience :: Financial and Insurance Industry
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Operating System :: OS Independent
27
+ Requires-Python: >=3.9
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: polars
31
+ Requires-Dist: duckdb
32
+ Requires-Dist: openai
33
+ Requires-Dist: tantivy
34
+ Requires-Dist: pyrate-limiter
35
+ Requires-Dist: tenacity
36
+ Requires-Dist: cryptography
37
+ Requires-Dist: pyarrow
38
+ Requires-Dist: pandas
39
+ Dynamic: author
40
+ Dynamic: home-page
41
+ Dynamic: license-file
42
+ Dynamic: requires-python
43
+
44
+ [![Linux Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=Linux%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
45
+ [![Windows Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=Windows%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
46
+ [![macOS Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=macOS%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
47
+ [![Read the Docs](https://img.shields.io/readthedocs/nosible-py/latest.svg?label=docs&logo=readthedocs)](https://nosible-py.readthedocs.io/en/latest/)
48
+ [![PyPI version](https://img.shields.io/pypi/v/nosible.svg?label=PyPI&logo=python)](https://pypi.org/project/nosible/)
49
+ [![codecov](https://codecov.io/gh/NosibleAI/nosible-py/graph/badge.svg?token=DDXGQ3V6P9)](https://codecov.io/gh/NosibleAI/nosible-py)
50
+ [![PyPI - Python Versions](https://img.shields.io/pypi/pyversions/nosible.svg)](https://pypi.org)
51
+
52
+
53
+ [//]: # ([![Visit Nosible]&#40;https://img.shields.io/static/v1?label=Visit&message=nosible.ai&style=flat&logoUri=https://www.nosible.ai/assests/favicon.png&logoWidth=20&#41;]&#40;https://www.nosible.ai/&#41;)
54
+
55
+ ![Logo](https://github.com/NosibleAI/nosible-py/blob/main/docs/_static/readme.png?raw=true)
56
+
57
+ # NOSIBLE Search Client
58
+
59
+ A high-level Python client for the [NOSIBLE Search API](https://www.nosible.ai/search/v1/docs/swagger#/).
60
+ Easily integrate the Nosible Search API into your Python projects.
61
+
62
+ ### 📄 Documentation
63
+
64
+ You can find the full NOSIBLE Search Client documentation
65
+ [here](https://nosible-py.readthedocs.io/).
66
+
67
+ ### 📦 Installation
68
+
69
+ ```bash
70
+ pip install nosible
71
+ ```
72
+
73
+ ### ⚡ Installing with uv
74
+
75
+ ```bash
76
+ uv pip install nosible
77
+ ```
78
+
79
+ **Requirements**:
80
+
81
+ * Python 3.9+
82
+ * polars
83
+ * duckdb
84
+ * openai
85
+ * tantivy
86
+ * pyrate-limiter
87
+ * tenacity
88
+ * cryptography
89
+ * pyarrow
90
+ * pandas
91
+
92
+ ### 🔑 Authentication
93
+
94
+ 1. Sign in to [NOSIBLE.AI](https://www.nosible.ai/) and grab your free API key.
95
+ 2. Set it as an environment variable or pass directly:
96
+
97
+ On Windows
98
+
99
+ ```powershell
100
+ $Env:NOSIBLE_API_KEY="basic|abcd1234..."
101
+ $Env:LLM_API_KEY="sk-..." # for query expansions (optional)
102
+ ```
103
+
104
+ On Linux
105
+ ```bash
106
+ export NOSIBLE_API_KEY="basic|abcd1234..."
107
+ export LLM_API_KEY="sk-..." # for query expansions (optional)
108
+ ```
109
+
110
+ Or in code:
111
+
112
+ - As an argument:
113
+
114
+ ```python
115
+ from nosible import Nosible
116
+
117
+ client = Nosible(
118
+ nosible_api_key="basic|abcd1234...",
119
+ llm_api_key="sk-...",
120
+ )
121
+ ```
122
+
123
+ - As an environment variable:
124
+
125
+ ```python
126
+ from nosible import Nosible
127
+ import os
128
+
129
+ os.environ["NOSIBLE_API_KEY"] = "basic|abcd1234..."
130
+ os.environ["LLM_API_KEY"] = "sk-..."
131
+ ```
132
+
133
+ ### 🔍 Your first search
134
+
135
+ To complete your first search:
136
+
137
+ ```python
138
+ from nosible import Nosible
139
+
140
+ with Nosible(nosible_api_key="YOUR API KEY") as client:
141
+
142
+ results = client.fast_search(
143
+ question="What is Artificial General Intelligence?"
144
+ )
145
+
146
+ print(results)
147
+ ```
148
+
149
+ ### 📄 Documentation
150
+
151
+ You can find the full NOSIBLE Search Client documentation
152
+ [here](https://nosible-py.readthedocs.io/).
153
+
154
+ ### 📡 Swagger Docs
155
+
156
+ You can find online endpoints to the NOSIBLE Search API Swagger Docs
157
+ [here](https://www.nosible.ai/search/v1/docs/swagger#/).
158
+
159
+
160
+ ---
161
+
162
+ © 2025 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
163
+
164
+
165
+ [nosible-badge]: https://img.shields.io/static/v1?label=Visit&message=nosible.ai&\style=flat&logoUri=https://raw.githubusercontent.com/NosibleAI/nosible-py/main/docs/_static/favicon.png&logoWidth=20
@@ -0,0 +1,122 @@
1
+ [![Linux Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=Linux%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
2
+ [![Windows Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=Windows%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
3
+ [![macOS Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=macOS%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
4
+ [![Read the Docs](https://img.shields.io/readthedocs/nosible-py/latest.svg?label=docs&logo=readthedocs)](https://nosible-py.readthedocs.io/en/latest/)
5
+ [![PyPI version](https://img.shields.io/pypi/v/nosible.svg?label=PyPI&logo=python)](https://pypi.org/project/nosible/)
6
+ [![codecov](https://codecov.io/gh/NosibleAI/nosible-py/graph/badge.svg?token=DDXGQ3V6P9)](https://codecov.io/gh/NosibleAI/nosible-py)
7
+ [![PyPI - Python Versions](https://img.shields.io/pypi/pyversions/nosible.svg)](https://pypi.org)
8
+
9
+
10
+ [//]: # ([![Visit Nosible]&#40;https://img.shields.io/static/v1?label=Visit&message=nosible.ai&style=flat&logoUri=https://www.nosible.ai/assests/favicon.png&logoWidth=20&#41;]&#40;https://www.nosible.ai/&#41;)
11
+
12
+ ![Logo](https://github.com/NosibleAI/nosible-py/blob/main/docs/_static/readme.png?raw=true)
13
+
14
+ # NOSIBLE Search Client
15
+
16
+ A high-level Python client for the [NOSIBLE Search API](https://www.nosible.ai/search/v1/docs/swagger#/).
17
+ Easily integrate the Nosible Search API into your Python projects.
18
+
19
+ ### 📄 Documentation
20
+
21
+ You can find the full NOSIBLE Search Client documentation
22
+ [here](https://nosible-py.readthedocs.io/).
23
+
24
+ ### 📦 Installation
25
+
26
+ ```bash
27
+ pip install nosible
28
+ ```
29
+
30
+ ### ⚡ Installing with uv
31
+
32
+ ```bash
33
+ uv pip install nosible
34
+ ```
35
+
36
+ **Requirements**:
37
+
38
+ * Python 3.9+
39
+ * polars
40
+ * duckdb
41
+ * openai
42
+ * tantivy
43
+ * pyrate-limiter
44
+ * tenacity
45
+ * cryptography
46
+ * pyarrow
47
+ * pandas
48
+
49
+ ### 🔑 Authentication
50
+
51
+ 1. Sign in to [NOSIBLE.AI](https://www.nosible.ai/) and grab your free API key.
52
+ 2. Set it as an environment variable or pass directly:
53
+
54
+ On Windows
55
+
56
+ ```powershell
57
+ $Env:NOSIBLE_API_KEY="basic|abcd1234..."
58
+ $Env:LLM_API_KEY="sk-..." # for query expansions (optional)
59
+ ```
60
+
61
+ On Linux
62
+ ```bash
63
+ export NOSIBLE_API_KEY="basic|abcd1234..."
64
+ export LLM_API_KEY="sk-..." # for query expansions (optional)
65
+ ```
66
+
67
+ Or in code:
68
+
69
+ - As an argument:
70
+
71
+ ```python
72
+ from nosible import Nosible
73
+
74
+ client = Nosible(
75
+ nosible_api_key="basic|abcd1234...",
76
+ llm_api_key="sk-...",
77
+ )
78
+ ```
79
+
80
+ - As an environment variable:
81
+
82
+ ```python
83
+ from nosible import Nosible
84
+ import os
85
+
86
+ os.environ["NOSIBLE_API_KEY"] = "basic|abcd1234..."
87
+ os.environ["LLM_API_KEY"] = "sk-..."
88
+ ```
89
+
90
+ ### 🔍 Your first search
91
+
92
+ To complete your first search:
93
+
94
+ ```python
95
+ from nosible import Nosible
96
+
97
+ with Nosible(nosible_api_key="YOUR API KEY") as client:
98
+
99
+ results = client.fast_search(
100
+ question="What is Artificial General Intelligence?"
101
+ )
102
+
103
+ print(results)
104
+ ```
105
+
106
+ ### 📄 Documentation
107
+
108
+ You can find the full NOSIBLE Search Client documentation
109
+ [here](https://nosible-py.readthedocs.io/).
110
+
111
+ ### 📡 Swagger Docs
112
+
113
+ You can find online endpoints to the NOSIBLE Search API Swagger Docs
114
+ [here](https://www.nosible.ai/search/v1/docs/swagger#/).
115
+
116
+
117
+ ---
118
+
119
+ © 2025 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
120
+
121
+
122
+ [nosible-badge]: https://img.shields.io/static/v1?label=Visit&message=nosible.ai&\style=flat&logoUri=https://raw.githubusercontent.com/NosibleAI/nosible-py/main/docs/_static/favicon.png&logoWidth=20
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nosible"
3
- version = "0.2.8"
3
+ version = "0.2.10"
4
4
  description = "Python client for the NOSIBLE Search API"
5
5
  readme = { file = "README.md", content-type = "text/markdown" }
6
6
  requires-python = ">=3.9"
@@ -429,7 +429,6 @@ class ResultSet(Iterator[Result]):
429
429
  >>> import polars as pl
430
430
  >>> from nosible.classes.result_set import Result, ResultSet
431
431
 
432
- # -- date grouping (published) --------------------------------------------
433
432
  >>> data = [
434
433
  ... {"published": "2021-01-15", "netloc": "a.com", "author": "", "language": "en", "similarity": 0.5},
435
434
  ... {"published": "2021-02-20", "netloc": "a.com", "author": "", "language": "en", "similarity": 0.8},
@@ -439,23 +438,18 @@ class ResultSet(Iterator[Result]):
439
438
  >>> results.analyze(by="published") # doctest: +NORMALIZE_WHITESPACE
440
439
  {'2021-01': 1, '2021-02': 2}
441
440
 
442
- # -- numeric stats (similarity) ------------------------------------------
443
441
  >>> stats = results.analyze(by="similarity")
444
442
  >>> set(stats) == {"count", "null_count", "mean", "std", "min", "25%", "50%", "75%", "max"}
445
443
  True
446
444
  >>> round(stats["mean"], 2)
447
445
  0.5
448
446
 
449
- # -- categorical counts (language) --------------------------------------
450
447
  >>> results.analyze(by="language")
451
448
  {'en': 2, 'fr': 1}
452
449
 
453
- # -- author special case ------------------------------------------------
454
- # empty author strings get mapped to "Author Unknown"
455
450
  >>> results.analyze(by="author")
456
451
  {'Author Unknown': 3}
457
452
 
458
- # -- invalid field -------------------------------------------------------
459
453
  >>> results.analyze(by="foobar") # doctest: +IGNORE_EXCEPTION_DETAIL
460
454
  Traceback (most recent call last):
461
455
  ValueError: Cannot analyze by 'foobar' - not a valid field.
@@ -0,0 +1,165 @@
1
+ Metadata-Version: 2.4
2
+ Name: nosible
3
+ Version: 0.2.10
4
+ Summary: Python client for the NOSIBLE Search API
5
+ Home-page: https://github.com/NosibleAI/nosible
6
+ Author: Stuart Reid, Matthew Dicks, Richard Taylor, Gareth Warburton
7
+ Author-email: Stuart Reid <stuart@nosible.com>, Matthew Dicks <matthew@nosible.com>, Richard Taylor <richard@nosible.com>, Gareth Warburton <gareth@nosible.com>
8
+ License-Expression: MIT
9
+ Project-URL: Homepage, https://github.com/NosibleAI/nosible
10
+ Project-URL: Documentation, https://nosible-py.readthedocs.io/en/latest/
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Topic :: Software Development :: Libraries
16
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
17
+ Classifier: Intended Audience :: Information Technology
18
+ Classifier: Intended Audience :: Science/Research
19
+ Classifier: Intended Audience :: Financial and Insurance Industry
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Operating System :: OS Independent
27
+ Requires-Python: >=3.9
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: polars
31
+ Requires-Dist: duckdb
32
+ Requires-Dist: openai
33
+ Requires-Dist: tantivy
34
+ Requires-Dist: pyrate-limiter
35
+ Requires-Dist: tenacity
36
+ Requires-Dist: cryptography
37
+ Requires-Dist: pyarrow
38
+ Requires-Dist: pandas
39
+ Dynamic: author
40
+ Dynamic: home-page
41
+ Dynamic: license-file
42
+ Dynamic: requires-python
43
+
44
+ [![Linux Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=Linux%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
45
+ [![Windows Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=Windows%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
46
+ [![macOS Tests](https://img.shields.io/github/actions/workflow/status/NosibleAI/nosible-py/run_tests_and_publish.yml?branch=main&label=macOS%20Tests)](https://github.com/NosibleAI/nosible-py/actions/workflows/run_tests_and_publish.yml)
47
+ [![Read the Docs](https://img.shields.io/readthedocs/nosible-py/latest.svg?label=docs&logo=readthedocs)](https://nosible-py.readthedocs.io/en/latest/)
48
+ [![PyPI version](https://img.shields.io/pypi/v/nosible.svg?label=PyPI&logo=python)](https://pypi.org/project/nosible/)
49
+ [![codecov](https://codecov.io/gh/NosibleAI/nosible-py/graph/badge.svg?token=DDXGQ3V6P9)](https://codecov.io/gh/NosibleAI/nosible-py)
50
+ [![PyPI - Python Versions](https://img.shields.io/pypi/pyversions/nosible.svg)](https://pypi.org)
51
+
52
+
53
+ [//]: # ([![Visit Nosible]&#40;https://img.shields.io/static/v1?label=Visit&message=nosible.ai&style=flat&logoUri=https://www.nosible.ai/assests/favicon.png&logoWidth=20&#41;]&#40;https://www.nosible.ai/&#41;)
54
+
55
+ ![Logo](https://github.com/NosibleAI/nosible-py/blob/main/docs/_static/readme.png?raw=true)
56
+
57
+ # NOSIBLE Search Client
58
+
59
+ A high-level Python client for the [NOSIBLE Search API](https://www.nosible.ai/search/v1/docs/swagger#/).
60
+ Easily integrate the Nosible Search API into your Python projects.
61
+
62
+ ### 📄 Documentation
63
+
64
+ You can find the full NOSIBLE Search Client documentation
65
+ [here](https://nosible-py.readthedocs.io/).
66
+
67
+ ### 📦 Installation
68
+
69
+ ```bash
70
+ pip install nosible
71
+ ```
72
+
73
+ ### ⚡ Installing with uv
74
+
75
+ ```bash
76
+ uv pip install nosible
77
+ ```
78
+
79
+ **Requirements**:
80
+
81
+ * Python 3.9+
82
+ * polars
83
+ * duckdb
84
+ * openai
85
+ * tantivy
86
+ * pyrate-limiter
87
+ * tenacity
88
+ * cryptography
89
+ * pyarrow
90
+ * pandas
91
+
92
+ ### 🔑 Authentication
93
+
94
+ 1. Sign in to [NOSIBLE.AI](https://www.nosible.ai/) and grab your free API key.
95
+ 2. Set it as an environment variable or pass directly:
96
+
97
+ On Windows
98
+
99
+ ```powershell
100
+ $Env:NOSIBLE_API_KEY="basic|abcd1234..."
101
+ $Env:LLM_API_KEY="sk-..." # for query expansions (optional)
102
+ ```
103
+
104
+ On Linux
105
+ ```bash
106
+ export NOSIBLE_API_KEY="basic|abcd1234..."
107
+ export LLM_API_KEY="sk-..." # for query expansions (optional)
108
+ ```
109
+
110
+ Or in code:
111
+
112
+ - As an argument:
113
+
114
+ ```python
115
+ from nosible import Nosible
116
+
117
+ client = Nosible(
118
+ nosible_api_key="basic|abcd1234...",
119
+ llm_api_key="sk-...",
120
+ )
121
+ ```
122
+
123
+ - As an environment variable:
124
+
125
+ ```python
126
+ from nosible import Nosible
127
+ import os
128
+
129
+ os.environ["NOSIBLE_API_KEY"] = "basic|abcd1234..."
130
+ os.environ["LLM_API_KEY"] = "sk-..."
131
+ ```
132
+
133
+ ### 🔍 Your first search
134
+
135
+ To complete your first search:
136
+
137
+ ```python
138
+ from nosible import Nosible
139
+
140
+ with Nosible(nosible_api_key="YOUR API KEY") as client:
141
+
142
+ results = client.fast_search(
143
+ question="What is Artificial General Intelligence?"
144
+ )
145
+
146
+ print(results)
147
+ ```
148
+
149
+ ### 📄 Documentation
150
+
151
+ You can find the full NOSIBLE Search Client documentation
152
+ [here](https://nosible-py.readthedocs.io/).
153
+
154
+ ### 📡 Swagger Docs
155
+
156
+ You can find online endpoints to the NOSIBLE Search API Swagger Docs
157
+ [here](https://www.nosible.ai/search/v1/docs/swagger#/).
158
+
159
+
160
+ ---
161
+
162
+ © 2025 Nosible Inc. | [Privacy Policy](https://www.nosible.ai/privacy) | [Terms](https://www.nosible.ai/terms)
163
+
164
+
165
+ [nosible-badge]: https://img.shields.io/static/v1?label=Visit&message=nosible.ai&\style=flat&logoUri=https://raw.githubusercontent.com/NosibleAI/nosible-py/main/docs/_static/favicon.png&logoWidth=20