-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: Add project-level README (#103)
- Loading branch information
1 parent
02b800c
commit f8771b3
Showing
2 changed files
with
102 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Installation | ||
|
||
## Build from source | ||
|
||
To build and run Ragbits from the source code: | ||
|
||
1. Requirements: [**uv**](https://docs.astral.sh/uv/getting-started/installation/) & [**python**](https://docs.astral.sh/uv/guides/install-python/) 3.10 or higher | ||
2. Install dependencies and run venv in editable mode: | ||
|
||
```bash | ||
$ source ./setup_dev_env.sh | ||
``` | ||
|
||
## Install pre-commit | ||
|
||
To ensure code quality we use pre-commit hook with several checks. Setup it by: | ||
|
||
``` | ||
pre-commit install | ||
``` | ||
|
||
All updated files will be reformatted and linted before the commit. | ||
|
||
To reformat and lint all files in the project, use: | ||
|
||
`pre-commit run --all-files` | ||
|
||
The used linters are configured in `.pre-commit-config.yaml`. You can use `pre-commit autoupdate` to bump tools to the latest versions. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,90 @@ | ||
# Ragbits | ||
<div align="center"> | ||
|
||
Repository for internal experiment with our upcoming LLM framework. | ||
<h1>Ragbits</h1> | ||
|
||
# Installation | ||
*Building blocks for rapid development of GenAI applications* | ||
|
||
## Build from source | ||
[Documentation](https://ragbits.deepsense.ai) | [Contact](https://deepsense.ai/contact/) | ||
|
||
To build and run Ragbits from the source code: | ||
[![PyPI - License](https://img.shields.io/pypi/l/ragbits)](https://pypi.org/project/ragbits) | ||
[![PyPI - Version](https://img.shields.io/pypi/v/ragbits)](https://pypi.org/project/ragbits) | ||
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ragbits)](https://pypi.org/project/ragbits) | ||
|
||
1. Requirements: [**uv**](https://docs.astral.sh/uv/getting-started/installation/) & [**python**](https://docs.astral.sh/uv/guides/install-python/) 3.10 or higher | ||
2. Install dependencies and run venv in editable mode: | ||
</div> | ||
|
||
```bash | ||
$ source ./setup_dev_env.sh | ||
--- | ||
|
||
## What's Included? | ||
|
||
- [X] **[Core](packages/ragbits-core)** - Fundamental tools for working with prompts and LLMs. | ||
- [X] **[Document Search](packages/ragbits-document-search)** - Handles vector search to retrieve relevant documents. | ||
- [X] **[CLI](packages/ragbits-cli)** - The `ragbits` shell command, enabling tools such as GUI prompt management. | ||
- [ ] **Flow Controls** - Manages multi-stage chat flows for performing advanced actions *(coming soon)*. | ||
- [ ] **Structured Querying** - Queries structured data sources in a predictable manner *(coming soon)*. | ||
- [ ] **Caching** - Adds a caching layer to reduce costs and response times *(coming soon)*. | ||
- [ ] **Observability & Audit** - Tracks user queries and events for easier troubleshooting *(coming soon)*. | ||
- [ ] **Guardrails** - Ensures response safety and relevance *(coming soon)*. | ||
|
||
## Installation | ||
|
||
To use the complete Ragbits stack, install the `ragbits` package: | ||
|
||
```sh | ||
pip install ragbits | ||
``` | ||
|
||
Alternatively, you can use individual components of the stack by installing their respective packages: `ragbits-core`, `ragbits-document-search`, `ragbits-cli`. | ||
|
||
## Quickstart | ||
|
||
First, create a prompt and a model for the data used in the prompt: | ||
|
||
```python | ||
from pydantic import BaseModel | ||
from ragbits.core.prompt import Prompt | ||
|
||
class Dog(BaseModel): | ||
breed: str | ||
age: int | ||
temperament: str | ||
|
||
class DogNamePrompt(Prompt[Dog, str]): | ||
system_prompt = """ | ||
You are a dog name generator. You come up with funny names for dogs given the dog details. | ||
""" | ||
|
||
user_prompt = """ | ||
The dog is a {breed} breed, {age} years old, and has a {temperament} temperament. | ||
""" | ||
``` | ||
|
||
## Install pre-commit | ||
Next, create an instance of the LLM and the prompt: | ||
|
||
To ensure code quality we use pre-commit hook with several checks. Setup it by: | ||
```python | ||
from ragbits.core.llms.litellm import LiteLLM | ||
|
||
llm = LiteLLM("gpt-4o") | ||
example_dog = Dog(breed="Golden Retriever", age=3, temperament="friendly") | ||
prompt = DogNamePrompt(example_dog) | ||
``` | ||
pre-commit install | ||
|
||
Finally, generate a response from the LLM using the prompt: | ||
|
||
```python | ||
response = await llm.generate(prompt) | ||
print(f"Generated dog name: {response}") | ||
``` | ||
|
||
All updated files will be reformatted and linted before the commit. | ||
<!-- | ||
TODO: | ||
Add links to quickstart guides for individual packages, demonstrating how to extend this with their functionality. | ||
Add a link to the full tutorial. | ||
--> | ||
|
||
## License | ||
|
||
To reformat and lint all files in the project, use: | ||
Ragbits is licensed under the [MIT License](LICENSE). | ||
|
||
`pre-commit run --all-files` | ||
## Contributing | ||
|
||
The used linters are configured in `.pre-commit-config.yaml`. You can use `pre-commit autoupdate` to bump tools to the latest versions. | ||
We welcome contributions! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for more information. |