
Салют! Меня зовут Григорий, и я главный по спецпроектам в команде AllSee.
Если LLM‑провайдер блокирует ваши запросы из России, то решить данную проблему поможет прокси‑сервер. В данном гайде я рассказываю, как быстро настроить squid‑proxy на вашей удалённой машине.
Зачем это нужно на примере openai-python
Если мы попробуем вызвать модель OpenAI, то получим ошибку:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
)
chat_completion = client.chat.completions.create(
messages=[
{
"role": "user",
"content": "Привет!",
}
],
model="gpt-4o",
)
print(chat_completion.choices[0].message.content)
# -> openai.PermissionDeniedError: Error code: 403 - {'error': {'code': 'unsupported_country_region_territory', 'message': 'Country, region, or territory not supported', 'param': None, 'type': 'request_forbidden'}}
Чтобы избавиться от данной ошибки, нужно отправлять запросы из «supported_country_region_territory». Для этого достаточно передать в конструктор класса OpenAI http‑клиент с настроенным адресом прокси‑сервера:
import os
import httpx
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
http_client=httpx.Client(proxy=os.environ.get("PROXY_URL"))
)
chat_completion = client.chat.completions.create(
messages=[
{
"role": "user",
"content": "Привет!",
}
],
model="gpt-4o",
)
print(chat_completion.choices[0].message.content)
# -> "Привет! Как могу помочь вам сегодня?"
Где взять адрес прокси‑сервера? Об этом далее.
Гайд по настроке squid-proxy
Предварительная подготовка
1. Сервер
Для настройки прокси‑сервера нам потребуется сервер, арендованный за рубежом. В моём случае, это сервер в Нидерландах с OS Ubuntu 20.04 LTS. Инструкция будет наиболее актуальна именно для Ubuntu, однако для других OS отличия будут минимальны (скорее всего, только пакетный менеджер).
2. Публичный IP-адрес вашего клиента
Чтобы разрешить запросы только с нужного нам клиента — узнаём его публичный IP. IP сервера можно посмотреть в панели управления провайдера, а IP вашей локальной машины можно посмотреть, к примеру, тут.
Настройка squid-proxy
Подключаемся к нашему удалённому серверу по ssh
ssh -i path/to/your/private/ssh/key user@your_server_ip
Обновляем пакеты
sudo apt update sudo apt upgrade
Установливаем Squid
sudo apt-get -y install squid
Преднастраиваем сеть (опционально)
sudo ufw allow squid sudo iptables -P INPUT ACCEPT
Активируем сервис squid
sudo systemctl enable squid sudo systemctl start squid
Настраиваем squid
Создаём бекап конфигурации squid и удаляем из оригинального файла всё 8000 строк комментариев
sudo cp /etc/squid/squid.conf /etc/squid/squid_back.conf sudo grep -v '^ *#\|^ *$' /etc/squid/squid_back.conf > /etc/squid/squid.conf
Открываем файл конфигурации squid
sudo apt-get -y install nano sudo nano /etc/squid/squid.conf
Файл squid.conf необходимо изменить следующим образом
... http_access allow localhost acl whitelist src 111.111.111.111 # Добавляем IP адрес нашего основного сервера (нужно указать реальный IP) в список доступа http_access allow whitelist # Разрешаем основному серверу использовать наш прокси http_access deny all ...
Перезапускаем cервис squid
sudo systemctl restart squid
Получаем адрес прокси-сервера
Запрашиваем публичный IP сервера
curl https://ipinfo.io/ip
Итоговый адрес прокси‑сервера (с портом 3128 по умолчанию):
http://proxy_server_ip:3128
Заключение
Теперь у вас есть рабочий прокси‑сервер, который позволит обойти географические ограничения и использовать нужные вам инструменты из «unsupported_country_region_territory».
Буду рад обсудить гайд в комментариях. Удачи и будем на связи✌️