🤖 Learn how to supercharge your Discord server with a powerful chatbot using LLM models (OpenAI, Cohere, Google, Mistal, etc.) and Eden AI’s Workflow AskYoda.
1. What is Discord?
Discord is a popular communication platform that allows users to create and join communities, known as servers, where they can chat, share media, and play games together. It has become a go-to platform for businesses, gamers, and communities to connect and collaborate.
One of Discord’s unique features is the ability to add bots to servers.
Bots are automated programs that can perform various tasks, such as moderating chats, playing music, and providing information. These bots can be created by anyone, making Discord a versatile platform for businesses to enhance their communication and productivity.
Integrating a Chatbot with Discord can be immensely beneficial for companies. It can assist in various tasks, such as:
- Answering common questions
- Providing information about products or services
- Conducting polls and surveys
- Moderating chats
- And much more!
This can save time and effort for your employees, allowing them to focus on more critical tasks.
2. What is Eden AI’s AskYoda Chatbot Workflow ?
AskYoda, or “Ask Your Data,” is a versatile workflow developed by Eden AI that empowers users to create customized AI chatbots on their own data or business-specific information with any AI model from a wide range of LLMs available on the market: OpenAI, Cohere, Google Cloud, and more.
To start using AskYoda you need to create an account on Eden AI for free. Then, you’ll be able to get your API key directly from the homepage and use it with free credits offered by Eden AI.
AskYoda addresses limitations by facilitating data integration and training in multiple programming languages. It has broad applications across industries, making it a versatile tool for businesses, students, content creators, and researchers to train chatbots with their own data.
3. How to create a chatbot into your Discord server?
Now that we’ve covered the purpose of integrating a chatbot into Discord, we can start building our Chatbot using Eden AI’s AskYoda pre-built Workflow and GPT 3.5.
💡 The project is built using the nextcord.py library and has three different functionalities based on user roles:
- Normal User: Ask questions in the chat, and the AskYoda bot will answer you based on its stored data.
- Developer: Add URLs to your AskYoda project, check the number of chunks in the project, and assign/remove the “developer” role to other members.
- Admin: Assign/remove the “Admin” and “developer” roles to other members.
Here’s how to get started:
Step 1. Create an account on Eden AI for free
To begin utilizing AskYoda, the first step is to create a free account on Eden AI. Once registered, you can obtain your API key 🔑 directly from the homepage. This key can then be used with the complimentary credits provided by Eden AI.
Step 2. Clone the Git repository
You can find the Git repository here.
Step 3. Create a bot on Discord’s developer portal
- Go to Discord’s developer portal.
- Create a new application.
- Customize it as desired (name, avatar, etc.).
- Navigate to the “Bot” section and create a bot. Obtain the bot token.
Step 4. Add the bot to your server
Use the generated link from the “OAuth2” section in the Discord developer portal to invite the bot to your server.
Step 5. Reset the bot token
In the .env
file in your cloned repository, update the variable with the newly generated bot token.
Step 6. Enable necessary Intents
Ensure all required Intents are enabled in the Discord developer portal. This includes at least the, Guilds
, Messages
, and Message Content
intents.
Step 7. Add your Eden AI API token
In the .env
file, update the EDENAI_API
variable with your Eden AI API token.
Step 8. Set your project ID
If you have an existing AskYoda project, copy its ID from Eden AI and paste it into the PROJECT_ID
variable in the .env
file.
Step 9. Define your bot channel
Specify the channel ID where you want the bot to answer questions. You can find the channel ID in the Discord developer settings.
Step 10. Run the bot
Last but not least, execute the bot.py
file in your cloned repository to start the bot.
🙌 That’s it! Your AskYoda chatbot should now be up and running in your Discord server, ready to answer questions based on its stored data. Developers and admins can also manage project URLs, roles, and settings as needed.
4. Development details
We primarily utilize the nextcord library, which is essentially a fork of the discord.py library. Additionally, we employ decouple to manage our .env file. While our codebase is spread across various files, the central one for running the bot is main.py. This file mainly serves the purpose of keeping the bot operational and integrating all its features.
@client.event
async def on_ready():
print("The bot is up")
print(nextcord.__version__)
print("-----------------------------")
initial_extensions = []
for filename in os.listdir("./cogs"):
if filename.endswith(".py"):
initial_extensions.append("cogs." + filename[:-3])
if __name__ == "__main__":
for extension in initial_extensions:
client.load_extension(extension)
client.run(config("TOKEN"))
These features are organized in the cogs folder, with each file dedicated to a specific Discord role. A Discord role, comprising a set of permissions assigned to a user, can be categorized as admin, developer, or user.
The admin role exclusively utilizes nexcord features for role management, without involving the Eden AI APIs.
On the other hand, a user is limited to making posts about their inquiries. The bot responds only if it finds a relevant answer within the project. If not, it redirects the query to the custom classification endpoint of Eden AI. In case of a unique situation, assistance may be sought from the developer team.
def ask_llm(self, question):
try:
print(question)
"""Ask Language Learning Model (LLM). Returns an answer from LLM"""
payload = {
"query": question
+ "if you don't know the answers just say 'I don't know'. For all questions please provide some link to the ressources if you can. Make the answer shorter that 2000 char'",
"llm_provider": "openai",
"llm_model": "gpt-3.5-turbo-instruct",
"k": 5,
}
response = requests.post(
self.url + "/ask_llm", json=payload, headers=headers
)
The developer role encompasses multiple functionalities. First, it allows the addition of a URL to the Ask Yoda project. Leveraging the /add_url endpoint, the provided URL is passed to the project through the /add_url command. Consequently, all data associated with the URL becomes part of the project.
@nextcord.slash_command(
name="add_url",
description="This command is to add data to your project",
)
async def add_url(self, ctx: Interaction, url: str):
if "Eden AI Team" in [role.name for role in ctx.user.roles]:
await ctx.response.send_message("Trying to add : " + url)
result = self.yoda.add_urls([url])
await ctx.send(result)
else:
await ctx.response.send_message("Access unauthorize")
Additionally, developers have the capability to store conversations in the project. When the bot struggles to comprehend a query, a developer can intervene, answer the question, and save the conversation to the project for future reference. The /save command employs the /add_text endpoint to append the conversation to the project.
@nextcord.slash_command(
name="save",
description="This command is to save a thread",
)
async def save_thread(self, ctx: Interaction):
if "Eden AI Team" in [role.name for role in ctx.user.roles]:
# result = self.yoda.add_texts()
text = await self.get_text(ctx.channel)
await ctx.send("trying to save", ephemeral=True)
result = self.yoda.add_texts(text)
await ctx.send("saved", ephemeral=True)
else:
await ctx.response.send_message("Access unauthorize")
Ultimately, all the Eden AI features are encapsulated within an AskYoda Python class. This class houses numerous methods, many of which are dedicated to handling API calls.
Conclusion
😎 AskYoda from Eden AI is a powerful and engaging bot that can significantly enhance the Discord experience for businesses. Its AI capabilities and witty responses make it a valuable addition to any server, providing practical value and entertainment.
As Discord continues to gain traction in the business world, bots like AskYoda are becoming essential tools for companies to improve communication, productivity, and customer service.
Top comments (1)
Hello ! Very cool post!
Don't hesitate to put colors on your
codeblock
like this example for have to have a better understanding of your code 😎