Metadata-Version: 2.4
Name: OpenSam
Version: 0.1.2
Summary: A GPT based slack bot trained to specific personalities and use cases.
Keywords: GPT,AI,Slack,OpenAI,bot
Author-email: Johannes Maron <johannes@maron.family>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Communications :: Email
Classifier: Topic :: Games/Entertainment :: Role-Playing
Classifier: Topic :: Multimedia :: Sound/Audio :: Conversion
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
Classifier: Topic :: Office/Business
Classifier: Topic :: Office/Business :: Groupware
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
Classifier: Topic :: Text Processing :: Markup :: Markdown
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
License-File: LICENSE
Requires-Dist: aiohttp
Requires-Dist: httpx
Requires-Dist: click
Requires-Dist: redis
Requires-Dist: slack-bolt
Requires-Dist: openai>=1.21.0
Requires-Dist: sentry-sdk
Requires-Dist: pydoc-markdown ; extra == "docs"
Requires-Dist: mkdocs-material ; extra == "docs"
Requires-Dist: pymdown-extensions ; extra == "docs"
Requires-Dist: pre-commit==4.2.0 ; extra == "lint"
Requires-Dist: ruff==0.12.0 ; extra == "lint"
Requires-Dist: pytest ; extra == "test"
Requires-Dist: pytest-asyncio ; extra == "test"
Requires-Dist: pytest-cov ; extra == "test"
Requires-Dist: pytest-env ; extra == "test"
Requires-Dist: respx ; extra == "test"
Project-URL: Changelog, https://github.com/voiio/Sam/releases
Project-URL: Documentation, https://code.voiio.de/Sam/
Project-URL: Project-URL, https://github.com/voiio/Sam/
Provides-Extra: docs
Provides-Extra: lint
Provides-Extra: test

![screenshot.png](screenshot.png)

# Sam – AI powered co-workers

[![PyPi Version](https://img.shields.io/pypi/v/opensam.svg)](https://pypi.python.org/pypi/opensam/)
[![Test Coverage](https://codecov.io/gh/voiio/sam/branch/main/graph/badge.svg)](https://codecov.io/gh/voiio/sam)
[![GitHub License](https://img.shields.io/github/license/voiio/sam)](https://raw.githubusercontent.com/voiio/sam/master/LICENSE)

Sam is an AI-powered co-worker to empower all your colleagues.
Sam lives in company's Slack workspace and is always ready to help.

## Features

Like any good co-worker Sam can

* 🧑‍💻search the web,
* 🌐browse websites,
* 🔎search your companies products,
* 📈read internal documents,
* 📧send emails,
* <img src="https://github.githubassets.com/images/icons/emoji/octocat.png" style="height:1em"> create GitHub issues,

and soon spend half the day in meetings and the other half in the kitchen.

Needless to say, Sam can do all of those things faster, cheaper and better
than most of your human colleagues 😏

## Installation

1. Setup OpenWebUI.
2. Clone the repository.
3. Create your own `.env` file based on the `.env.example` file.
   ```bash
   cp template.env .env
   ```
4. Spin up docker-compose with `docker-compose up -d`.

### Create a Slack App

1. Create a new Slack App [here](https://api.slack.com/apps?new_app=1).
2. Select `From an app manifest` and enter the URL to the [slack-manifest.yml](slack-manifest.yml) file in this repo.
3. Click `Create App` and then `Install to Workspace`.
4. Copy the `Bot User OAuth Access Token` and add it to your environment as `SLACK_BOT_TOKEN`.
5. Create a new `App-Level Tokens` under `Basic Infomation` and add it to your environment as `SLACK_APP_TOKEN`.


### How it works

Sam is a Slack bot that OpenWebUI's AI models to provide a work-colleague like
experience, right in your Slack workspace.

Everyone in your company has instant access to the most powerful AI companion.

Sam uses OpenAI's assistant API to fine-tune ChatGPT to:

* a specific personality traits,
* provide domain specific knowledge
* and company specific context

to provide a work-colleague like experience.

![meme](https://repository-images.githubusercontent.com/726003479/24d020ac-3ac5-401c-beae-7a6103c4e7ae)

