openfree commited on
Commit
08c822b
·
verified ·
1 Parent(s): dc0fd9c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -29
app.py CHANGED
@@ -100,43 +100,58 @@ def messages_to_history(messages: Messages) -> History:
100
  history.append([q['content'], r['content']])
101
  return history
102
 
103
- # API 클라이언트 초기화
104
- YOUR_ANTHROPIC_TOKEN = os.getenv('ANTHROPIC_API_KEY')
105
- YOUR_OPENAI_TOKEN = os.getenv('OPENAI_API_KEY')
106
 
107
- claude_client = anthropic.Anthropic(api_key=YOUR_ANTHROPIC_TOKEN)
108
- openai_client = openai.OpenAI(api_key=YOUR_OPENAI_TOKEN)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
 
110
  async def try_claude_api(system_message, claude_messages, timeout=15):
 
 
 
111
  try:
112
  start_time = time.time()
113
- with claude_client.messages.stream(
114
- model="claude-3-5-sonnet-20241022",
115
- max_tokens=7800,
116
- system=system_message,
117
- messages=claude_messages
118
- ) as stream:
119
- collected_content = ""
120
- for chunk in stream:
121
- current_time = time.time()
122
- if current_time - start_time > timeout:
123
- print(f"Claude API response time: {current_time - start_time:.2f} seconds")
124
- raise TimeoutError("Claude API timeout")
125
- if chunk.type == "content_block_delta":
126
- collected_content += chunk.delta.text
127
- yield collected_content
128
- await asyncio.sleep(0)
129
-
130
- start_time = current_time
131
 
 
 
132
  except Exception as e:
133
  print(f"Claude API error: {str(e)}")
134
- raise e
135
 
136
  async def try_openai_api(openai_messages):
 
 
 
137
  try:
138
- stream = openai_client.chat.completions.create(
139
- model="gpt-4o",
140
  messages=openai_messages,
141
  stream=True,
142
  max_tokens=4096,
@@ -144,14 +159,16 @@ async def try_openai_api(openai_messages):
144
  )
145
 
146
  collected_content = ""
147
- for chunk in stream:
148
- if chunk.choices[0].delta.content is not None:
149
  collected_content += chunk.choices[0].delta.content
150
  yield collected_content
151
 
152
  except Exception as e:
153
  print(f"OpenAI API error: {str(e)}")
154
- raise e
 
 
155
 
156
  class Demo:
157
  def __init__(self):
 
100
  history.append([q['content'], r['content']])
101
  return history
102
 
 
 
 
103
 
104
+ # API 클라이언트 초기화
105
+ YOUR_ANTHROPIC_TOKEN = os.getenv('ANTHROPIC_API_KEY', '') # 기본값 추가
106
+ YOUR_OPENAI_TOKEN = os.getenv('OPENAI_API_KEY', '') # 기본값 추가
107
+
108
+ # API 키 검증
109
+ if not YOUR_ANTHROPIC_TOKEN or not YOUR_OPENAI_TOKEN:
110
+ print("Warning: API keys not found in environment variables")
111
+
112
+ # API 클라이언트 초기화 시 예외 처리 추가
113
+ try:
114
+ claude_client = anthropic.Anthropic(api_key=YOUR_ANTHROPIC_TOKEN)
115
+ openai_client = openai.OpenAI(api_key=YOUR_OPENAI_TOKEN)
116
+ except Exception as e:
117
+ print(f"Error initializing API clients: {str(e)}")
118
+ claude_client = None
119
+ openai_client = None
120
 
121
+
122
  async def try_claude_api(system_message, claude_messages, timeout=15):
123
+ if not claude_client:
124
+ raise Exception("Claude client not initialized")
125
+
126
  try:
127
  start_time = time.time()
128
+ async with asyncio.timeout(timeout): # 타임아웃 설정
129
+ with claude_client.messages.stream(
130
+ model="claude-3-5-sonnet-20241022",
131
+ max_tokens=7800,
132
+ system=system_message,
133
+ messages=claude_messages
134
+ ) as stream:
135
+ collected_content = ""
136
+ async for chunk in stream:
137
+ if chunk.type == "content_block_delta":
138
+ collected_content += chunk.delta.text
139
+ yield collected_content
140
+ await asyncio.sleep(0)
 
 
 
 
 
141
 
142
+ except asyncio.TimeoutError:
143
+ raise TimeoutError(f"Claude API timeout after {timeout} seconds")
144
  except Exception as e:
145
  print(f"Claude API error: {str(e)}")
146
+ raise
147
 
148
  async def try_openai_api(openai_messages):
149
+ if not openai_client:
150
+ raise Exception("OpenAI client not initialized")
151
+
152
  try:
153
+ stream = await openai_client.chat.completions.create(
154
+ model="gpt-4", # 모델명 수정
155
  messages=openai_messages,
156
  stream=True,
157
  max_tokens=4096,
 
159
  )
160
 
161
  collected_content = ""
162
+ async for chunk in stream:
163
+ if chunk.choices[0].delta.content:
164
  collected_content += chunk.choices[0].delta.content
165
  yield collected_content
166
 
167
  except Exception as e:
168
  print(f"OpenAI API error: {str(e)}")
169
+ raise
170
+
171
+
172
 
173
  class Demo:
174
  def __init__(self):