google-gemini / generative-ai-python

The official Python library for the Google Gemini API
https://pypi.org/project/google-generativeai/
Apache License 2.0
1.46k stars 288 forks source link

google.api_core.exceptions.Unknown: None Stream removed #346

Open TiDurak opened 4 months ago

TiDurak commented 4 months ago

Description of the bug:

Here is my code:

from config import settings, google_ai_settings

import discord
from discord import app_commands
from discord.ext import commands

from googletrans import Translator
import google.generativeai as genai
from google.generativeai.types import StopCandidateException

class SText(commands.Cog):
    """Text"""

    def __init__(self, bot):
        self.bot = bot
        genai.configure(api_key=google_ai_settings.get("google_api_key"))

        self.model = genai.GenerativeModel(
          model_name="gemini-1.0-pro",
          safety_settings=google_ai_settings.get("safety_settings"),
          generation_config=google_ai_settings.get("generation_config"),
        )
        self.chat_sessions = {}

    ...

    @app_commands.command(name="ai", description="Общение с нейросетью Google Gemini")
    @app_commands.describe(message="Задай свой вопрос, скотина блядь")
    async def ai(self, interaction: discord.Interaction, message: str):
        embed = discord.Embed(color=0xffcd4c, title=f"{interaction.user.name} :: {message}")
        await interaction.response.send_message(embed=embed)
        embed.set_footer(text="DebilAI - Powered by Google Gemini 1.0 Pro",
                         icon_url="https://tidurak.github.io/google-gemini-icon.png")
        chat_session = self.chat_sessions.get(interaction.guild.id)
        if chat_session == None:
            self.chat_sessions[interaction.guild.id] = self.model.start_chat(history=[])
            chat_session = self.chat_sessions.get(interaction.guild.id)
            response = None

        try:
            response = chat_session.send_message(message)
        except StopCandidateException:
            fuck_you_message = "ТЫ еблаН? Я нейронка от гугла, и у меня ёбнутые фильтры на т.н. \"опасный\" контент. ЫЫЫЫЫ"
            embed.add_field(name="🚫 Иди нахуй", value=fuck_you_message, inline=False)
            await interaction.edit_original_response(embed=embed)
            return

        if len(response.text) > 1000:
            res = response.text
            j = 1
            embed.add_field(name="\u200b", value=res[:999], inline=False)
            while True:
                j += 1
                res = res[999:]
                if len(res) > 1000:
                    embed.add_field(name="\u200b", value=res[0:999], inline=False)
                else:
                    embed.add_field(name="\u200b", value=res, inline=False)
                    break
        else:
            embed.add_field(name="\u200b", value=response.text, inline=False)

        await interaction.edit_original_response(embed=embed)

async def setup(bot):
    await bot.add_cog(SText(bot))

Everything works fine, but after like 10 minutes api responds only on second time, and i get Exception:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\app_commands\commands.py", line 841, in _do_call
    return await self._callback(self.binding, interaction, **params)  # type: ignore
  File "C:\Users\User\Files\bot\cogs\slash\s_text.py", line 134, in ai
    response = chat_session.send_message(message)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\generativeai\generative_models.py", line 496, in send_message
    response = self.model.generate_content(
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\generativeai\generative_models.py", line 262, in generate_content
    response = self._client.generate_content(
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\ai\generativelanguage_v1beta\services\generative_service\client.py", line 812, in generate_content
    response = rpc(
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\gapic_v1\method.py", line 131, in __call__
    return wrapped_func(*args, **kwargs)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\retry\retry_unary.py", line 293, in retry_wrapped_func
    return retry_target(
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\retry\retry_unary.py", line 153, in retry_target
    _retry_error_helper(
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\retry\retry_base.py", line 212, in _retry_error_helper
    raise final_exc from source_exc
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\retry\retry_unary.py", line 144, in retry_target
    result = target()
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\timeout.py", line 120, in func_with_timeout
    return func(*args, **kwargs)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\google\api_core\grpc_helpers.py", line 78, in error_remapped_callable
    raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.Unknown: None Stream removed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\app_commands\tree.py", line 1248, in _call
    await command._invoke_with_namespace(interaction, namespace)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\app_commands\commands.py", line 867, in _invoke_with_namespace
    return await self._do_call(interaction, transformed_values)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\app_commands\commands.py", line 860, in _do_call
    raise CommandInvokeError(self, e) from e
discord.app_commands.errors.CommandInvokeError: Command 'ai' raised an exception: Unknown: None Stream removed

What should I do?

Actual vs expected behavior:

No response

Any other information you'd like to share?

No response