A newer version of the Gradio SDK is available:
6.5.1
OpenAI API 교체 가이드
🎯 교체 가능한 위치
📍 수정 필요한 위치
1. Import 부분 (라인 5)
# 현재
from openai import OpenAI
# 교체 시
from anthropic import Anthropic # 예: Claude
from google.generativeai import ... # 예: Gemini
from ... import ... # 다른 API
2. 클라이언트 초기화 (라인 1267)
# 현재
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini")
# 예시 1: Claude로 교체
client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
MODEL = os.getenv("ANTHROPIC_MODEL", "claude-3-haiku-20240307")
# 예시 2: Gemini로 교체
import google.generativeai as genai
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
MODEL = os.getenv("GEMINI_MODEL", "gemini-pro")
# 예시 3: Ollama (로컬)로 교체
client = OpenAI(
api_key="ollama", # 사용 안 함
base_url="http://localhost:11434/v1"
)
MODEL = os.getenv("OLLAMA_MODEL", "llama2")
3. API 호출 부분 (3곳)
위치 A: detect_echo_ai (라인 1565)
# 현재
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
max_tokens=200,
temperature=0.3
)
# Claude로 교체 시
response = client.messages.create(
model=MODEL,
max_tokens=200,
system=system_prompt,
messages=[
{"role": "user", "content": user_prompt}
],
temperature=0.3
)
content = response.content[0].text # 응답 파싱도 변경
위치 B: shape_echolalia (라인 1669)
# 현재
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": prompt},
{"role": "user", "content": user_input}
],
max_tokens=200,
temperature=0.7
)
# Claude로 교체 시
response = client.messages.create(
model=MODEL,
max_tokens=200,
system=prompt,
messages=[
{"role": "user", "content": user_input}
],
temperature=0.7
)
content = response.content[0].text
위치 C: generate_context_analysis (라인 2276)
# 현재
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
max_tokens=300,
temperature=0.3
)
# Claude로 교체 시
response = client.messages.create(
model=MODEL,
max_tokens=300,
system=system_prompt,
messages=[
{"role": "user", "content": user_prompt}
],
temperature=0.3
)
content = response.content[0].text
🔧 대체 API별 가이드
옵션 1: Anthropic Claude
변경사항
# 1. Import
from anthropic import Anthropic
# 2. 클라이언트
client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
MODEL = "claude-3-haiku-20240307"
# 3. API 호출
response = client.messages.create(
model=MODEL,
max_tokens=200,
system=system_prompt, # system 파라미터로 전달
messages=[
{"role": "user", "content": user_prompt}
],
temperature=0.3
)
content = response.content[0].text # 응답 파싱 변경
환경변수:
ANTHROPIC_API_KEY=your_key_here
ANTHROPIC_MODEL=claude-3-haiku-20240307
옵션 2: Google Gemini
변경사항
# 1. Import
import google.generativeai as genai
# 2. 클라이언트
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
MODEL = genai.GenerativeModel("gemini-pro")
# 3. API 호출
prompt = f"{system_prompt}\n\n{user_prompt}"
response = MODEL.generate_content(
prompt,
generation_config={
"max_output_tokens": 200,
"temperature": 0.3
}
)
content = response.text
환경변수:
GEMINI_API_KEY=your_key_here
GEMINI_MODEL=gemini-pro
옵션 3: Ollama (로컬)
변경사항
# 1. Import (OpenAI 호환 방식 유지)
from openai import OpenAI
# 2. 클라이언트
client = OpenAI(
api_key="ollama",
base_url="http://localhost:11434/v1"
)
MODEL = "llama2"
# 3. API 호출 (기존 코드 그대로)
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
max_tokens=200,
temperature=0.3
)
설치:
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama2
환경변수:
OLLAMA_MODEL=llama2
옵션 4: OpenAI 호환 API
변경사항
# 1. Import
from openai import OpenAI
# 2. 클라이언트 (base_url만 변경)
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url="https://api.example.com/v1" # 호환 API URL
)
MODEL = os.getenv("OPENAI_MODEL", "custom-model")
# 3. API 호출 (기존 코드 그대로)
response = client.chat.completions.create(...)
예시 서비스:
- Together AI
- Groq
- Replicate
- MindsDB
📋 체크리스트
필수 변경사항
- Import 문
- 클라이언트 초기화
- API 호출 파라미터
- 응답 파싱 로직
선택 변경사항
- 환경변수 이름
- 프롬프트 포맷
- 에러 처리
- 토큰 추정 로직
🔄 단계별 교체 가이드
Step 1: 백업
cp gradio_app.py gradio_app.py.backup
Step 2: Import 수정
# 라인 5
from openai import OpenAI
↓
from anthropic import Anthropic # 예시
Step 3: 클라이언트 수정
# 라인 1267-1268
client = OpenAI(...)
MODEL = ...
↓
client = Anthropic(...)
MODEL = ...
Step 4: API 호출 수정
# 3곳 수정
response = client.chat.completions.create(...)
↓
response = client.messages.create(...)
Step 5: 응답 파싱 수정
# 각 호출 후
content = response.choices[0].message.content
↓
content = response.content[0].text # Claude 예시
Step 6: 테스트
python gradio_app.py
⚠️ 주의사항
1. 응답 포맷 차이
OpenAI: response.choices[0].message.content
Claude: response.content[0].text
Gemini: response.text
Ollama: response.choices[0].message.content (호환)
2. System Prompt 처리
OpenAI: messages에 system 포함
Claude: system 파라미터로 분리
Gemini: system + user 합쳐서 prompt
Ollama: messages에 system 포함 (호환)
3. 파라미터 차이
max_tokens vs max_output_tokens
temperature: 대부분 동일
🎯 추천 교체 순서
1순위: Ollama (로컬)
장점:
- OpenAI 호환 API
- 코드 변경 최소화
- 비용 무료
- 프라이버시
단점:
- 로컬 리소스 필요
- 성능 제한적
2순위: OpenAI 호환 서비스
장점:
- 코드 변경 최소화
- 더 낮은 비용 가능
- 빠른 반응
예시:
- Groq (매우 빠름)
- Together AI (저렴)
3순위: Claude
장점:
- 성능 우수
- 긴 컨텍스트
단점:
- 코드 변경 필요
- 비용 비슷
📊 API 비교표
| API | 코드 변경 | 비용 | 속도 | 성능 |
|---|---|---|---|---|
| OpenAI | - | $$$ | 중간 | ⭐⭐⭐⭐⭐ |
| Claude | 중간 | $$$ | 빠름 | ⭐⭐⭐⭐⭐ |
| Gemini | 많음 | $$ | 빠름 | ⭐⭐⭐⭐ |
| Ollama | 최소 | 무료 | 느림 | ⭐⭐⭐ |
| Groq | 최소 | $ | 매우 빠름 | ⭐⭐⭐⭐ |
✅ 테스트 방법
1. 단위 테스트
# detect_echo_ai 테스트
result = detect_echo_ai("아이스크림", "", "식사")
print(result)
# shape_echolalia 테스트
result = shape_echolalia("아이스크림", "L1", "식사")
print(result)
2. 통합 테스트
# 앱 실행
python gradio_app.py
# UI에서 직접 테스트
# - 텍스트 입력
# - 분석 버튼 클릭
# - 결과 확인
📄 파일 변경 목록
gradio_app.py 수정:
- 라인 5: Import
- 라인 1267-1268: 클라이언트 초기화
- 라인 1565-1573: detect_echo_ai 호출
- 라인 1669-1677: shape_echolalia 호출
- 라인 2276-2284: generate_context_analysis 호출
- 각 응답 파싱 부분
환경변수 (.env):
- OPENAI_API_KEY → 새 API 키
- OPENAI_MODEL → 새 모델 이름
API 교체 가이드 완료