example(slack-qa-bot): Add slack QA bot example (#654)
Signed-off-by: mudler <mudler@localai.io>renovate/github.com-imdario-mergo-1.x
parent
91a67d5ee0
commit
2a45a99737
@ -0,0 +1,48 @@ |
|||||||
|
# Create an app-level token with connections:write scope |
||||||
|
SLACK_APP_TOKEN=xapp-1-... |
||||||
|
# Install the app into your workspace to grab this token |
||||||
|
SLACK_BOT_TOKEN=xoxb-... |
||||||
|
|
||||||
|
# Set this to a random string, it doesn't matter, however if present the python library complains |
||||||
|
OPENAI_API_KEY=sk-foo-bar-baz |
||||||
|
|
||||||
|
# Optional: gpt-3.5-turbo and gpt-4 are currently supported (default: gpt-3.5-turbo) |
||||||
|
OPENAI_MODEL=gpt-3.5-turbo |
||||||
|
# Optional: You can adjust the timeout seconds for OpenAI calls (default: 30) |
||||||
|
OPENAI_TIMEOUT_SECONDS=560 |
||||||
|
|
||||||
|
MEMORY_DIR=/tmp/memory_dir |
||||||
|
|
||||||
|
OPENAI_API_BASE=http://api:8080/v1 |
||||||
|
|
||||||
|
EMBEDDINGS_MODEL_NAME=all-MiniLM-L6-v2 |
||||||
|
|
||||||
|
## Repository and sitemap to index in the vector database on start |
||||||
|
SITEMAP="https://kairos.io/sitemap.xml" |
||||||
|
|
||||||
|
# Optional repository names. |
||||||
|
# REPOSITORIES="foo,bar" |
||||||
|
# # Define clone URL for "foo" |
||||||
|
# foo_CLONE_URL="http://github.com.." |
||||||
|
# bar_CLONE_URL="..." |
||||||
|
# # Define branch for foo |
||||||
|
# foo_BRANCH="master" |
||||||
|
# Optional token if scraping issues |
||||||
|
# GITHUB_PERSONAL_ACCESS_TOKEN="" |
||||||
|
# ISSUE_REPOSITORIES="go-skynet/LocalAI,foo/bar,..." |
||||||
|
|
||||||
|
# Optional: When the string is "true", this app translates ChatGPT prompts into a user's preferred language (default: true) |
||||||
|
USE_SLACK_LANGUAGE=true |
||||||
|
# Optional: Adjust the app's logging level (default: DEBUG) |
||||||
|
SLACK_APP_LOG_LEVEL=INFO |
||||||
|
# Optional: When the string is "true", translate between OpenAI markdown and Slack mrkdwn format (default: false) |
||||||
|
TRANSLATE_MARKDOWN=true |
||||||
|
|
||||||
|
|
||||||
|
### LocalAI |
||||||
|
|
||||||
|
DEBUG=true |
||||||
|
MODELS_PATH=/models |
||||||
|
IMAGE_PATH=/tmp |
||||||
|
# See: https://github.com/go-skynet/model-gallery |
||||||
|
PRELOAD_MODELS=[{"url": "github:go-skynet/model-gallery/gpt4all-j.yaml", "name": "gpt-3.5-turbo"}] |
@ -0,0 +1,23 @@ |
|||||||
|
## Slack QA Bot |
||||||
|
|
||||||
|
This example uses https://github.com/spectrocloud-labs/Slack-QA-bot to deploy a slack bot that can answer to your documentation! |
||||||
|
|
||||||
|
- Create a new Slack app using the manifest-dev.yml file |
||||||
|
- Install the app into your Slack workspace |
||||||
|
- Retrieve your slack keys and edit `.env` |
||||||
|
- Start the app |
||||||
|
|
||||||
|
```bash |
||||||
|
# Clone LocalAI |
||||||
|
git clone https://github.com/go-skynet/LocalAI |
||||||
|
|
||||||
|
cd LocalAI/examples/slack-qa-bot |
||||||
|
|
||||||
|
cp -rfv .env.example .env |
||||||
|
|
||||||
|
# Edit .env and add slackbot api keys, or repository settings to scan |
||||||
|
vim .env |
||||||
|
|
||||||
|
# run the bot |
||||||
|
docker-compose up |
||||||
|
``` |
@ -0,0 +1,97 @@ |
|||||||
|
apiVersion: v1 |
||||||
|
kind: Namespace |
||||||
|
metadata: |
||||||
|
name: slack-bot |
||||||
|
--- |
||||||
|
apiVersion: v1 |
||||||
|
kind: PersistentVolumeClaim |
||||||
|
metadata: |
||||||
|
name: knowledgebase |
||||||
|
namespace: slack-bot |
||||||
|
labels: |
||||||
|
app: localai-qabot |
||||||
|
spec: |
||||||
|
accessModes: |
||||||
|
- ReadWriteOnce |
||||||
|
resources: |
||||||
|
requests: |
||||||
|
storage: 5Gi |
||||||
|
--- |
||||||
|
apiVersion: apps/v1 |
||||||
|
kind: Deployment |
||||||
|
metadata: |
||||||
|
name: localai-qabot |
||||||
|
namespace: slack-bot |
||||||
|
labels: |
||||||
|
app: localai-qabot |
||||||
|
spec: |
||||||
|
selector: |
||||||
|
matchLabels: |
||||||
|
app: localai-qabot |
||||||
|
replicas: 1 |
||||||
|
template: |
||||||
|
metadata: |
||||||
|
labels: |
||||||
|
app: localai-qabot |
||||||
|
name: localai-qabot |
||||||
|
spec: |
||||||
|
containers: |
||||||
|
- name: localai-qabot-slack |
||||||
|
env: |
||||||
|
- name: OPENAI_API_KEY |
||||||
|
value: "x" |
||||||
|
- name: SLACK_APP_TOKEN |
||||||
|
value: "xapp-1-" |
||||||
|
- name: SLACK_BOT_TOKEN |
||||||
|
value: "xoxb-" |
||||||
|
- name: OPENAI_MODEL |
||||||
|
value: "gpt-3.5-turbo" |
||||||
|
- name: OPENAI_TIMEOUT_SECONDS |
||||||
|
value: "400" |
||||||
|
- name: OPENAI_SYSTEM_TEXT |
||||||
|
value: "" |
||||||
|
- name: MEMORY_DIR |
||||||
|
value: "/memory" |
||||||
|
- name: TRANSLATE_MARKDOWN |
||||||
|
value: "true" |
||||||
|
- name: OPENAI_API_BASE |
||||||
|
value: "http://local-ai.default.svc.cluster.local:8080" |
||||||
|
- name: REPOSITORIES |
||||||
|
value: "KAIROS,AGENT,SDK,OSBUILDER,PACKAGES,IMMUCORE" |
||||||
|
- name: KAIROS_CLONE_URL |
||||||
|
value: "https://github.com/kairos-io/kairos" |
||||||
|
- name: KAIROS_BRANCH |
||||||
|
value: "master" |
||||||
|
- name: AGENT_CLONE_URL |
||||||
|
value: "https://github.com/kairos-io/kairos-agent" |
||||||
|
- name: AGENT_BRANCH |
||||||
|
value: "main" |
||||||
|
- name: SDK_CLONE_URL |
||||||
|
value: "https://github.com/kairos-io/kairos-sdk" |
||||||
|
- name: SDK_BRANCH |
||||||
|
value: "main" |
||||||
|
- name: OSBUILDER_CLONE_URL |
||||||
|
value: "https://github.com/kairos-io/osbuilder" |
||||||
|
- name: OSBUILDER_BRANCH |
||||||
|
value: "master" |
||||||
|
- name: PACKAGES_CLONE_URL |
||||||
|
value: "https://github.com/kairos-io/packages" |
||||||
|
- name: PACKAGES_BRANCH |
||||||
|
value: "main" |
||||||
|
- name: IMMUCORE_CLONE_URL |
||||||
|
value: "https://github.com/kairos-io/immucore" |
||||||
|
- name: IMMUCORE_BRANCH |
||||||
|
value: "master" |
||||||
|
- name: GITHUB_PERSONAL_ACCESS_TOKEN |
||||||
|
value: "" |
||||||
|
- name: ISSUE_REPOSITORIES |
||||||
|
value: "kairos-io/kairos" |
||||||
|
image: quay.io/spectrocloud-labs/slack-qa-local-bot:qa |
||||||
|
imagePullPolicy: Always |
||||||
|
volumeMounts: |
||||||
|
- mountPath: "/memory" |
||||||
|
name: knowledgebase |
||||||
|
volumes: |
||||||
|
- name: knowledgebase |
||||||
|
persistentVolumeClaim: |
||||||
|
claimName: knowledgebase |
@ -0,0 +1,30 @@ |
|||||||
|
version: "3" |
||||||
|
|
||||||
|
services: |
||||||
|
api: |
||||||
|
image: quay.io/go-skynet/local-ai:latest |
||||||
|
# As initially LocalAI will download the models defined in PRELOAD_MODELS |
||||||
|
# you might need to tweak the healthcheck values here according to your network connection. |
||||||
|
# Here we give a timespan of 20m to download all the required files. |
||||||
|
healthcheck: |
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"] |
||||||
|
interval: 1m |
||||||
|
timeout: 20m |
||||||
|
retries: 20 |
||||||
|
ports: |
||||||
|
- 8080:8080 |
||||||
|
env_file: |
||||||
|
- .env |
||||||
|
volumes: |
||||||
|
- ./models:/models:cached |
||||||
|
command: ["/usr/bin/local-ai" ] |
||||||
|
|
||||||
|
slackbot: |
||||||
|
image: quay.io/spectrocloud-labs/slack-qa-local-bot:qa |
||||||
|
container_name: slackbot |
||||||
|
restart: always |
||||||
|
env_file: |
||||||
|
- .env |
||||||
|
depends_on: |
||||||
|
api: |
||||||
|
condition: service_healthy |
Loading…
Reference in new issue