Giter Site home page Giter Site logo

decentralised-ai / ailama Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zeyoyt/ailama

0.0 0.0 0.0 271 KB

a discord user installable app for ai response using ollama, JDA-5 and LangChain4J

License: MIT License

Java 96.36% Dockerfile 3.64%

ailama's Introduction

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

Please Read : Important Things to Consider


Table of Contents


Features

  • Simple To Use
  • Web Search Capabilities using SearXNG
  • Web Document for RAG Support using URL
  • Function Calling
  • 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 )
  • URL RAG supported, where you can provide a url in the URL Option and the bot will take the Website as a context

Prerequisite


How-To

  1. First Clone this Repo
https://github.com/ZeyoYT/AiLama.git
  1. Change Directory
cd AiLama
  1. Create Dot Env File ( check .env.example ) and Fill Details
mv ./.env.example ./.env
  1. Build Project
./gradlew build


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

How to Make a new Discord Installable App and Install it

  1. Go to https://discord.com/developers/applications
  2. Click 'New Application' button
  3. Give it a Name and agree to TOS and Developer Policy
  4. Go to Bot and Un-Select Public Bot and Enable Presence Intent & Server Members Intent
  5. Click on Reset Token and Reset the bot's token
  6. Copy the Shown Token and Paste it in the .env file
  7. Save the changes
  8. Go to Installation and Un-Select Guild Install, and Select User Install
  9. in Install Link select Discord Provided Link, then copy the link and open it
  10. Authorize the App


Whitelisting Other People to use the App


Using the Authorization Link, you can allow others to install the app, but to actually use the app you need to whitelist them


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, ...'

in this you need to add there User ID's inside a single quote seperated by coma ( , ), for Example

WHITELISTED_USERS='426802118683262976, 259214353931304963, 848561799132741652'

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


Important Things to Consider before Using the Project

  1. This is a side project, i will try my best to maintain it
  2. You Need to run the Bot to use the command and keep it running
  3. Code Quality is Low because i am still new with Ai and Lang Chain
  4. This project uses a unreleased feature of JDA-5 that Supports User Installable Apps
  5. Because its a unreleased feature, i didnt find any proper command framework, so a workaround manual command registration code was used ( will be fixed in future release )
  6. The Ai does not have a memory of previous conversation (would be added in future)
  7. Its my first time making a docker image, so there might be some issues with it
  8. First Response might be slow because of the model loading

Limitations

  1. The Response will varay from model to model
  2. URL RAG might not work with smaller models that support less context window
  3. Only supports Ollama right now
  4. No Memory for previous conversations

Run Using Docker

Docker Image is Available at Docker Hub


Using Docker Compose :-

Docker Compose File :

version: '3.8'

services:
  app:
    image: ailama:latest
    environment:
      - TOKEN=<YOUR_BOT_TOKEN>
      - OLLAMA_URL=<YOUR_OLLAMA_URL>
      - OLLAMA_PORT=<YOUR_OLLAMA_PORT>
      - OLLAMA_MODEL=<YOUR_OLLAMA_MODEL>
      - OLLAMA_EMBEDDING_MODEL=<YOUR_OLLAMA_EMBEDDING_MODEL>
      - DEV_ID=<YOUR_DISCORD_ID>
      # Optional Parameters :-
      # Write inside single quotes and the user ids separated by commas, if you dont want to use this feature, just write '' (empty string enclosed by single quotes)
      - WHITELISTED_USERS='<user_id1>,<user_id2>,<user_id3> ... <user_idN>'
      - SEARXNG_URL=<YOUR_SEARXNG_URL>
      - SEARXNG_PORT=<YOUR_SEARXNG_PORT>
      - SEARXNG_ENGINES=<YOUR_SEARXNG_ENGINES>

Run Command :

docker-compose up -d

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 DEV_ID=<developer_id> -e "WHITELISTED_USERS='<whitelisted_user_id>, <whitelisted_user_id>'" ailama:latest

Build Docker Image Your self

After Building you can also use the docker compose to run the bot


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 DEV_ID=<developer_id> -e "WHITELISTED_USERS='<whitelisted_user_id>, <whitelisted_user_id>'" ailama:latest

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


Setting SearXNG :-

  1. First Install SearXNG ( Setup Here )
  2. After Setting SearXNG, Open the settings.yml file ( Guide Here )
  3. Find Search: ( Guide Here )
  4. Add json to Formats like :-
# In settings.yml

search:
  formats:
    - html
    - json

Adding Environment Variables to AiLama :-

  1. Add the Following Environment Variables to the .env file
SEARXNG_URL=<SEARXNG_HOST_URL>
SEARXNG_PORT=<SEARXNG_PORT>
SEARXNG_ENGINES=<SEARXNG_ENGINES>
  1. Restart the Bot and Now you can use the Web Search FeatureS='SEARCH_ENGINE_HERE, SEARCH_ENGINE_HERE, ...'

Command Example

Ask a Query :-

/ai ask: <query here>

Example :-

/ai ask:Why is the Sky Blue

Asking Different Model on the Fly :-

/ai ask: <query> model: <model_name_with_version>

Example :-

/ai ask:Why is the Sky Blue model:gemma:latest

Asking Query in a User only Visible Message
( the command would be visible to the user who executed it ) :-

/ai ask: <query> ephemeral: <Options : True | False>

Example :-

/ai ask:Why is the Sky Blue ephemeral:True

Asking Query and Providing a Website URL For Context :-

/ai ask: <query> url: <url>

Example :-

/ai ask:Why is the Sky Blue url:https://www.space.com/why-is-the-sky-blue

Asking Query using Web Search ( Requires SearXNG ) :-

/ai ask: <query> web: <Options : True | False>

Example :-

/ai ask:What is the Time web:True

Asking Query using Web Search and Providing a Website URL For Context :-

/web search: <search query>

Example :-

/ai ask:What is the Time

ailama's People

Contributors

zeyoyt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.