Skip to content

Commit b36de5e

Browse files
committed
Add detailed logging for Claude API debugging
1 parent 31e18b3 commit b36de5e

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

questionbank/ai_tools/views.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,21 @@ def post(self, request):
2424
return Response({'error': 'Content is required'}, status=status.HTTP_400_BAD_REQUEST)
2525

2626
try:
27+
print(f"[AI Generate] Provider: {provider}, Type: {question_type}, Count: {count}, Content length: {len(content)}")
28+
2729
if provider == 'claude':
2830
questions = self._generate_with_claude(content, question_type, count, difficulty, examples)
2931
elif provider == 'openai':
3032
questions = self._generate_with_openai(content, question_type, count, difficulty, examples)
3133
else:
3234
return Response({'error': 'Invalid provider'}, status=status.HTTP_400_BAD_REQUEST)
3335

36+
print(f"[AI Generate] Success: {len(questions)} questions generated")
3437
return Response({'questions': questions})
3538
except Exception as e:
39+
import traceback
40+
print(f"[AI Generate] Error: {str(e)}")
41+
traceback.print_exc()
3642
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
3743

3844
def _build_prompt(self, content, question_type, count, difficulty, examples):
@@ -162,15 +168,31 @@ def _generate_with_claude(self, content, question_type, count, difficulty, examp
162168
client = anthropic.Anthropic(api_key=settings.ANTHROPIC_API_KEY)
163169
prompt = self._build_prompt(content, question_type, count, difficulty, examples)
164170

165-
message = client.messages.create(
166-
model="claude-sonnet-4-20250514",
167-
max_tokens=4096,
168-
messages=[
169-
{"role": "user", "content": prompt}
170-
]
171-
)
171+
print(f"[Claude] Sending request, prompt length: {len(prompt)}")
172+
173+
try:
174+
message = client.messages.create(
175+
model="claude-sonnet-4-20250514",
176+
max_tokens=4096,
177+
messages=[
178+
{"role": "user", "content": prompt}
179+
]
180+
)
181+
except Exception as api_error:
182+
print(f"[Claude] API error: {api_error}")
183+
raise ValueError(f"Claude API error: {str(api_error)}")
184+
185+
print(f"[Claude] Response received, stop_reason: {message.stop_reason}")
186+
187+
if not message.content:
188+
raise ValueError("Claude returned empty content")
172189

173190
response_text = message.content[0].text
191+
print(f"[Claude] Response text length: {len(response_text) if response_text else 0}")
192+
193+
if not response_text:
194+
raise ValueError("Claude returned empty text in response")
195+
174196
return self._parse_json_response(response_text)
175197

176198
def _generate_with_openai(self, content, question_type, count, difficulty, examples):

0 commit comments

Comments
 (0)