Не работают прокси при запросе к Gemini
Подключаюсь к прокси через этот метод: Вот эта штука стоит в начале кода, перед запросами к OpenAI и Gemini
proxy_ip =
proxy_port =
proxy_username =
proxy_password =
socks.set_default_proxy(socks.SOCKS5, proxy_ip, proxy_port, username=proxy_username, password=proxy_password)
socket.socket = socks.socksocket
При запросе к openai всё шик, запрос через прокси
# Функция для отправки запроса в модель GPT-3.5 Turbo с использованием кэширования
def get_openai_response(message):
user_id = message.from_user.id
client = OpenAI(api_key=get_next_openai_token())
processing_message = bot.reply_to(message, f"{loading}Обработка запроса...")
global openai_context
openai_context[user_id] = []
# Создаем тело запроса
user_message = {"role": "user", "content": message.text}
assistant_messages = [{"role": message[1]["role"], "content": message[1]["text"]} for message in openai_context[user_id] if message[1]["role"] in ["user", "assistant"]]
assistant_messages.append(user_message)
response = client.chat.completions.create(
model=MODELS_GPT,
messages=assistant_messages,
max_tokens=4000
)
if response:
assistant_response = response.choices[0].message.content
# Обновляем кэш OpenAI, добавляя текущий запрос
current_time = time.time()
# Удаляем старые записи из контекста
openai_context[user_id] = [
(timestamp, message) for timestamp, message in openai_context[user_id]
if current_time - timestamp <= EXPIRY_TIME
]
# Добавляем только последний ответ ассистента в контекст
if message.text:
openai_context[user_id] = [(current_time, {"role": "user", "text": message.text}), (current_time, {"role": "assistant", "text": assistant_response})]
else:
openai_context[user_id] = [(current_time, {"role": "assistant", "text": assistant_response})]
bot.delete_message(message.chat.id, processing_message.message_id)
# Ограничиваем размер контекста
if len(openai_context[user_id]) > MAX_CONTEXT_SIZE:
openai_context[user_id] = openai_context[user_id][-MAX_CONTEXT_SIZE:]
return assistant_response
А при запросе к Gemini, запрос почему то с моего айпи:
# Функция для получения ответа с помощью Gemini
def get_gemini_response(message, images=None):
user_id = message.from_user.id
genai.configure(api_key='')
global gemini_context
gemini_context[user_id] = []
processing_message = bot.reply_to(message, f"{loading}Обработка запроса...")
# Выбор соответствующей модели в зависимости от наличия изображений
model_name = 'gemini-pro-vision' if images else 'gemini-pro'
model = genai.GenerativeModel(model_name)
# Подготовка сообщений для многоходового чата
user_message = {"role": "user", "parts": [message.text]}
assistant_messages = [{"role": message[1]["role"], "parts": [message[1]["text"]]} for message in gemini_context[user_id] if message[1]["role"] in ["user", "model"]]
assistant_messages.append(user_message)
# Генерация контента на основе ввода
if images:
# Если предоставлены изображения, создайте мультимодальный запрос
img_objects = [PIL.Image.open(f"{user_id}_chat_image.jpg")]
if message.caption:
multimodal_prompt = [message.caption] + img_objects
else:
multimodal_prompt = img_objects
response = model.generate_content(multimodal_prompt)
else:
# Для текстовых запросов или чата используйте generate_content
response = model.generate_content(assistant_messages)
if images:
os.remove(f"{user_id}_chat_image.jpg")
current_time = time.time()
# Удаляем старые записи из контекста
gemini_context[user_id] = [
(timestamp, message) for timestamp, message in gemini_context[user_id]
if current_time - timestamp <= EXPIRY_TIME
]
message_caption = message.text if message.text else message.caption if message.caption else None
# Добавляем только последний ответ ассистента в контекст
gemini_context[user_id] = [(current_time, {"role": "user", "parts": message_caption}), (current_time, {"role": "model", "parts": response.text})]
bot.delete_message(message.chat.id, processing_message.message_id)
# Обработка ответа и возврат текста
return response.text
Подключался к прокси, через OpenAi запрос через прокси и не выдаёт ошибку, что запрещённый айпи, а на Gemini нет.