https://github.com/kmcleste/oracle-of-ammon
CLI utility for creating Search APIs
https://github.com/kmcleste/oracle-of-ammon
cli fastapi haystack nlp question-answering search typer
Last synced: 3 months ago
JSON representation
CLI utility for creating Search APIs
- Host: GitHub
- URL: https://github.com/kmcleste/oracle-of-ammon
- Owner: kmcleste
- License: mit
- Created: 2023-01-03T03:40:39.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-01T00:06:06.000Z (about 1 year ago)
- Last Synced: 2025-06-29T18:53:55.845Z (4 months ago)
- Topics: cli, fastapi, haystack, nlp, question-answering, search, typer
- Language: Python
- Homepage:
- Size: 3.46 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Oracle of Ammon
[](https://pypi.org/project/oracle-of-ammon/)
[](https://pypi.org/project/oracle-of-ammon/)
[](https://github.com/kmcleste/oracle-of-ammon/blob/main/LICENSE)A simple CLI tool for creating Search APIs.
## Installation
Creating a virtual environment is highly recommended. To do so, run:
```bash
python3 -m venv .venv
source .venv/bin/activate
```Once your environment is active, simply install the package with:
```bash
pip install oracle-of-ammon
```## Usage
To get started, checkout the help menu:
```bash
oracle-of-ammon --help
```[](https://github.com/faressoft/terminalizer)
Here, you will see we currently have two options: **summon** and **locust**.
### Summon
By default, Summon is configured to initialize an empty search service on port 8000. The API framework used is [FastAPI](https://fastapi.tiangolo.com/) and the underlying search engine is built on [Haystack](https://docs.haystack.deepset.ai/). If you would like to initialize the search service with documents upon startup, provide a filepath with the `--path` option. Once the service has been initialized, you can view the API docs at [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs). A static version of the swagger documentation can also be found [here](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/kmcleste/oracle-of-ammon/main/openapi.json#/).
| Option | Type | Default | Description |
| ------------- | ---- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| --path | TEXT | None | Filepath used to pre-index document store. |
| --sheet-name | TEXT | None | If using an excel file, select which sheet(s) to load. If none provided, all sheets will be loaded. Expects a comma-separated list. |
| --title | TEXT | Oracle of Ammon | API documentation title. |
| --index | TEXT | document | Default index name. |
| --faq | BOOL | TRUE | Selector for content preloaded into document store. |Supported Filetypes:
- FAQ: CSV, TSV, JSON, XLSX, TXT
- Semantic: TXTSee the [`data`](https://github.com/kmcleste/oracle-of-ammon/tree/main/oracle_of_ammon/data) directory for examples of accepted files.
[](https://github.com/faressoft/terminalizer)
### Locust
[Locust](https://locust.io/) is an open source tool for load testing. You're able to swarm your system with millions of simultaneous users -- recording service performance and other metrics. By default, Locust will start on port 8089. To start a new load test, simply enter the number of users you want to simulate, their spawn rate, and the host address to swarm.
[](https://locust.io)]
## Coming Eventually 👀
- ~~Semantic search~~
- ~~Document search~~
- ~~Document summarization~~
- Document ranking
- ~~Multiple index support~~
- Annotations/Feedback
- Fine tuning
- Additional locust endpoints
- Dynamic Locust config
- Custom pipelines
- Dedicated docs wiki