문제 상황
회사 내부 LLM 서버를 hosts 파일로 접근할 때 연결 실패
# /etc/hosts
192.168.1.100 llm-api.example-corp.com
# 실패하는 코드
client = OpenAI(
base_url="https://llm-api.example-corp.com/v1",
api_key="dummy-key",
http_client=httpx.Client() # ❌ 기본 설정으로는 실패!
)
원인
환경 변수의 프록시 설정이 hosts 파일보다 우선 적용되기 때문
요청 → 환경변수 HTTPS_PROXY 발견
→ 프록시로 접근 시도
→ hosts 파일 무시됨
→ ❌ 연결 실패
해결 방법
trust_env=False 추가로 프록시 우회
import httpx
from openai import OpenAI
# 해결 코드
client = OpenAI(
base_url="https://llm-api.example-corp.com/v1",
api_key="dummy-key",
http_client=httpx.Client(
trust_env=False, # 프록시 무시 ⭐ 핵심!
timeout=60.0
)
)
# ✅ 정상 작동!
핵심 포인트
설정역할필수도| trust_env=False | 프록시 우회 (핵심!) | ⭐⭐⭐⭐⭐ |
| timeout=60.0 | 네트워크 지연 대응 | ⭐⭐⭐ |
작동 원리
trust_env=True (기본): 환경변수 프록시 → ❌ hosts 파일 무시
trust_env=False: 프록시 무시 → ✅ hosts 파일 사용
디버깅 팁
# 프록시 설정 확인
import os
print(os.environ.get('HTTPS_PROXY')) # 값이 있으면 trust_env=False 필요
# hosts 파일 확인
# macOS/Linux: /etc/hosts
# Windows: C:\Windows\System32\drivers\etc\hosts
# 연결 테스트
ping llm-api.example-corp.com
curl --noproxy "*" https://llm-api.example-corp.com/v1/models
전체 예제
import httpx
from openai import OpenAI
client = OpenAI(
base_url="https://llm-api.example-corp.com/v1",
api_key="dummy-key",
http_client=httpx.Client(
trust_env=False,
timeout=60.0
)
)
response = client.chat.completions.create(
model="your-model-name",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=100
)
print(response.choices[0].message.content)
추가 옵션 (필요 시)
자체 서명 인증서를 사용하는 경우에만 추가:
import urllib3
# SSL 경고 비활성화 (자체 서명 인증서 사용 시에만)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
client = OpenAI(
base_url="https://llm-api.example-corp.com/v1",
api_key="dummy-key",
http_client=httpx.Client(
verify=False, # 자체 서명 인증서 허용
trust_env=False,
timeout=60.0
)
)
결론
hosts 파일 + 내부 서버 접근 시 반드시 trust_env=False 설정 필요!
프록시가 hosts 파일보다 우선하기 때문에, 프록시를 우회해야 내부 IP로 직접 연결됩니다.
태그: #Python #OpenAI #httpx #Proxy #NetworkTroubleshooting
'개발 일반 > 프로그래밍 언어 ∕ Python' 카테고리의 다른 글
| [Python] 개발환경 설정 - pip, pipenv, pyenv 란? (0) | 2022.07.27 |
|---|




최근댓글