Awesome
AiLama
A User Installable Discord App, made using JDA-5 ( java discord api 5 ), LangChain4J, and using Ollama to provide Ai Response anywhere in discord <br> <br> Please Read : Important Things to Consider
<br>Table of Contents
- Features
- Prerequisite
- How-To
- Whitelisting Other People to use the App
- Important Things to Consider before Using the Project
- Limitations
- Run Using Docker
- Build Docker Image Your self
- SearXNG Guide
- List of Commands
Features
- Simple To Use
- Web Search Capabilities using SearXNG
- Web Document for RAG Support using URL
- Function Calling on AI Command with DOT Notation ( example below )
- Normal Document Support
- can be used anywhere in discord where user installable apps are supported
- you can run you query by a different model on the fly using the model's field ( example below )
Prerequisite
Ollama :
Ollama is an open-source app that lets you run, create, and share large language models locally with a command-line interface
- Ollama 0.28 or Greater ( Download Here )
- Ai Model for Ollama ( Download Here ) [ llama3 Preferred ]
There are Two ways you can use AiLama, by using Docker Image or by Building the Project and Running it
Compile and Run
- Java 19 or Greater
- Gradle 7.6 or Greater ( Download Here )
Run without Compiling
- Docker ( Download Here )
Discord App
- A Discord Bot/App ( make New app from discord developer portal )
Optional Prerequisite
These are Optional Prerequisite, you can use the bot without them, but to get access to more features its recommended to install the following programs
Web Search
- SearXNG for Web Search ( Setup Here ) ( Guide by AiLama Here )
Image Generation
- Automatic1111 for Image Generation ( Download Here )
How-To
- First Clone this Repo
https://github.com/ZeyoYT/AiLama.git
- Change Directory
cd AiLama
- Create Dot Env File ( check .env.example ) and Fill Details
mv ./.env.example ./.env
- Build Project
./gradlew build
<br>
<br>
After Building the project, a new Jar File would be made in AiLama/build/shadow/
, that jar file can now be used to run the bot using the following command
java -jar ./<jar file name here>.jar
<br>
How to Make a new Discord Installable App and Install it
- Go to
https://discord.com/developers/applications
- Click 'New Application' button
- Give it a Name and agree to TOS and Developer Policy
- Go to Bot and Un-Select Public Bot and Enable Presence Intent & Server Members Intent
- Click on Reset Token and Reset the bot's token
- Copy the Shown Token and Paste it in the
.env
file - Save the changes
- Go to Installation and Un-Select Guild Install, and Select User Install
- in Install Link select
Discord Provided Link
, then copy the link and open it - Authorize the App
Whitelisting Other People to use the App
<br>Using the Authorization Link, you can allow others to install the app, but to actually use the app you need to whitelist them
<br>In the Dot Env File ( .env ), there is a field called WHITELISTED_USERS
, it must be shown something like this
WHITELISTED_USERS='WHITELISTED_USER_ID_HERE, WHITELISTED_USER_ID_HERE, ...'
<br>
in this you need to add there User ID's inside a single quote seperated by coma ( , ), for Example
WHITELISTED_USERS='426802118683262976, 259214353931304963, 848561799132741652'
<br>
Note: After Authorization of app, they might need to restart discord for the app to show up, and the app must be running, or else the command wont be registerd
<br>Important Things to Consider before Using the Project
- This is a side project, i will try my best to maintain it
- You Need to run the Bot to use the command and keep it running
- Code Quality is Low because i am still new with Ai and Lang Chain
- This project uses a unreleased feature of JDA-5 that Supports User Installable Apps
- Because it's a unreleased feature, i didn't find any proper command framework, so a workaround manual command registration code was used ( will be fixed in future release )
- The Ai does not have persistent memory, so it will forget the conversation after restart
- It's my first time making a docker image, so there might be some issues with it
- First Response might be slow because of the model loading
Limitations
- The Response will vary from model to model
- URL RAG might not work with smaller models that support less context window
- Only supports Ollama right now
- Memory of previous conversation resets on restart
<br>Note: Dot Query ( use function to get accurate response ) does not support memory, so it will not work with the previous conversation
Run Using Docker
Docker Image is Available at Docker Hub
<br>Using Docker Compose :-
Docker Compose File :
Run Command :
docker-compose up -d
<br>
Manual Method :-
Pull Command :
docker pull zeyoog/ailama
Run Command :
docker run -e "TOKEN=<bot token>" -e OLLAMA_URL=<ollama_host_url> -e OLLAMA_PORT=<ollama_port> -e OLLAMA_MODEL=<ollama_model> -e OLLAMA_EMBEDDING_MODEL=<ollama_embedding_model> -e USER_ID=<developer_id> -e "WHITELISTED_USERS='<whitelisted_user_id>, <whitelisted_user_id>'" ailama:latest
<br>
Build Docker Image Your self
After Building you can also use the docker compose to run the bot
<br>1. Clone Repo and Change Directory :
git clone https://github.com/zeyoyt/AiLama.git
cd AiLama
2. Run Docker Build Command :
docker build -t ailama:latest .
3. Run Docker Container :
docker run -e "TOKEN=<bot token>" -e OLLAMA_URL=<ollama_host_url> -e OLLAMA_PORT=<ollama_port> -e OLLAMA_MODEL=<ollama_model> -e OLLAMA_EMBEDDING_MODEL=<ollama_embedding_model> -e USER_ID=<developer_id> -e "WHITELISTED_USERS='<whitelisted_user_id>, <whitelisted_user_id>'" ailama:latest
<br>
SearXNG Guide
WARNING :- Using SearXNG you are scrapping results of different search engines and it might get you blocked from that search engine as its against there TOS
<br>Setting SearXNG :-
- First Install SearXNG ( Setup Here )
- After Setting SearXNG, Open the
settings.yml
file ( Guide Here ) - Find
Search:
( Guide Here ) - Add
json
toFormats
like :-
# In settings.yml
search:
formats:
- html
- json
<br>
Adding Environment Variables to AiLama :-
- Add the Following Environment Variables to the
.env
file
SEARXNG_URL=<SEARXNG_HOST_URL>
SEARXNG_PORT=<SEARXNG_PORT>
SEARXNG_ENGINES=<SEARXNG_ENGINES>
- Restart the Bot and Now you can use the Web Search Feature
List of Commands :-
- /ai
- /web
- /document
- /image