Skip to content

Commit

Permalink
chore: Add project-level README (#103)
Browse files Browse the repository at this point in the history
  • Loading branch information
ludwiktrammer authored Oct 16, 2024
1 parent 02b800c commit f8771b3
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 16 deletions.
28 changes: 28 additions & 0 deletions CONTRIBUTING.md
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.
90 changes: 74 additions & 16 deletions README.md
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.

0 comments on commit f8771b3

Please sign in to comment.