Update app.py
Browse files
app.py
CHANGED
@@ -157,29 +157,42 @@ with gr.Blocks(css_paths="app.css") as demo:
|
|
157 |
gr.update(open=True) # code_drawer
|
158 |
]
|
159 |
|
160 |
-
|
|
|
161 |
model="claude-3-5-sonnet-20241022",
|
162 |
max_tokens=7800,
|
163 |
system=system_message,
|
164 |
messages=claude_messages
|
165 |
-
)
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
|
184 |
except Exception as e:
|
185 |
raise ValueError(f'Error calling Claude API: {str(e)}')
|
|
|
157 |
gr.update(open=True) # code_drawer
|
158 |
]
|
159 |
|
160 |
+
# 스트리밍 응답 사용
|
161 |
+
with client.messages.stream(
|
162 |
model="claude-3-5-sonnet-20241022",
|
163 |
max_tokens=7800,
|
164 |
system=system_message,
|
165 |
messages=claude_messages
|
166 |
+
) as stream:
|
167 |
+
collected_content = ""
|
168 |
+
for chunk in stream:
|
169 |
+
if chunk.type == "content_block_delta":
|
170 |
+
delta = chunk.delta.text
|
171 |
+
collected_content += delta
|
172 |
+
|
173 |
+
yield [
|
174 |
+
collected_content, # code_output
|
175 |
+
_history, # history
|
176 |
+
None, # sandbox (아직 완성되지 않았으므로 None)
|
177 |
+
gr.update(active_key="loading"), # state_tab
|
178 |
+
gr.update(open=True) # code_drawer
|
179 |
+
]
|
180 |
+
|
181 |
+
# 최종 결과 반환
|
182 |
+
_history = messages_to_history([
|
183 |
+
{'role': Role.SYSTEM, 'content': system_message}
|
184 |
+
] + claude_messages + [{
|
185 |
+
'role': Role.ASSISTANT,
|
186 |
+
'content': collected_content
|
187 |
+
}])
|
188 |
+
|
189 |
+
yield [
|
190 |
+
collected_content, # code_output
|
191 |
+
_history, # history
|
192 |
+
send_to_sandbox(remove_code_block(collected_content)), # sandbox
|
193 |
+
gr.update(active_key="render"), # state_tab
|
194 |
+
gr.update(open=True) # code_drawer
|
195 |
+
]
|
196 |
|
197 |
except Exception as e:
|
198 |
raise ValueError(f'Error calling Claude API: {str(e)}')
|