Luis-Hauck / Gemini_Bot_Discord

MIT License
3 stars 0 forks source link

Dica #1

Open thx404 opened 1 month ago

thx404 commented 1 month ago
import discord
import google.generativeai as genai
from discord.ext import commands

DISCORD_BOT_TOKEN = "SEU_DISCORD_BOT_TOKEN"
GEMINI_API_KEY = "SUA_GEMINI_API_KEY"

intents = discord.Intents.default()
intents.messages = True
bot = commands.Bot(command_prefix="!", intents=intents)

genai.configure(api_key=GEMINI_API_KEY)

model_config = {
    'odel_name': 'gemini-1.0-pro',
    'temperature': 0.5,
    'top_p': 0.9,
    'top_k': 50,
    'frequency_penalty': 0.5,
    'presence_penalty': 0.5,
}

generation_config = {
    'candidate_count': 1,
}

model = genai.GenerativeModel(model_config, generation_config)

chat = model.start_chat(history=[])

async def buscar_historico_canal(canal, limit=5):
    messages_list = []

    async for message in canal.history(limit=limit):
        messages_list.append(message.content)  # Only append message content
        messages_list.reverse()

    return messages_list

def ask_gemini(mensagens):
    response = chat.send_message(mensagens)

    return response.text

@bot.event
async def on_ready():
    print(f"O {bot.user.name} ficou ligado!")

@bot.event
async def on_message(message):
    if message.author.bot:
        return

    async with message.channel.typing():

        if message.mentions and bot.user in message.mentions:
            content = message.content.split(maxsplit=1)[1].strip()
            resposta = ask_gemini(content)
            await message.reply(resposta)

    await bot.process_commands(message)

bot.run(DISCORD_BOT_TOKEN)

melhorei o script, gostei bastante da sua ideia, o intuito e melhorar o modelo tanto como melhorar as funções assincronas tmj. (vi seu projeto no dune)

thx404 commented 1 month ago

eu testei numa versão antiga do google generative ai entao tlgd

Luis-Hauck commented 1 month ago

Fico grato pela contribuição vou fazer alterações no modelo, até mesmo por conta da segurança na geração, A dúvida que tive no vídeo do Dune, sobre isso e quando criamos a variável bot = commands.Bot(command_prefix="!", intents=intents) em momento algum usamos esse comando, até essa parte é irrelevante await bot.process_commands(message) pois em momento algum usamos um comando com '!'. Como é a primeira vez que criei um bot tive dificuldade em iniciar ele, então preferi mencionar ele.

Luis-Hauck commented 1 month ago

Outra coisa que notei e que não usamos a função buscar_historico_canal para ver o historico de mensagens, a Gemini por padrão tem o seu historico de conversa, mas quanto marcamos ela várias vezes acaba que ela se perdendo.

Luis-Hauck commented 1 month ago

Fiz algumas alterações caso queira ver, mas sem mexer no modelo ainda, agora ela verifica o historico de mensagens.

thx404 commented 3 weeks ago

claro irei conferir

thx404 commented 3 weeks ago

Fico grato pela contribuição vou fazer alterações no modelo, até mesmo por conta da segurança na geração, A dúvida que tive no vídeo do Dune, sobre isso e quando criamos a variável bot = commands.Bot(command_prefix="!", intents=intents) em momento algum usamos esse comando, até essa parte é irrelevante await bot.process_commands(message) pois em momento algum usamos um comando com '!'. Como é a primeira vez que criei um bot tive dificuldade em iniciar ele, então preferi mencionar ele.

Deixe em branco. Isto passa para a API do Discord o prefixo porém se não vai usar só deixar em branco