QuestionGenerationService.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Services;
  3. class QuestionGenerationService
  4. {
  5. public function generateFromSource(string $sourceText): array
  6. {
  7. $prompt = app(QuestionPromptService::class)->buildQuestionFromSourcePrompt($sourceText);
  8. try {
  9. $result = app(AiClientService::class)->callJson($prompt);
  10. } catch (\Throwable $e) {
  11. return [
  12. 'success' => false,
  13. 'message' => 'AI 生成失败',
  14. 'prompt' => $prompt,
  15. 'question' => [],
  16. ];
  17. }
  18. $question = $this->normalizeGeneratedQuestion($result);
  19. return [
  20. 'success' => true,
  21. 'message' => '生成完成',
  22. 'prompt' => $prompt,
  23. 'question' => $question,
  24. ];
  25. }
  26. public function normalizeGeneratedQuestion(array $payload): array
  27. {
  28. return [
  29. 'stem' => $payload['stem'] ?? '',
  30. 'options' => $payload['options'] ?? null,
  31. 'answer' => $payload['answer'] ?? null,
  32. 'solution' => $payload['solution'] ?? null,
  33. 'question_type' => $payload['question_type'] ?? null,
  34. 'difficulty' => $payload['difficulty'] ?? null,
  35. 'knowledge_points' => $payload['knowledge_points'] ?? [],
  36. 'solution_steps' => $payload['solution_steps'] ?? [],
  37. 'abilities' => $payload['abilities'] ?? [],
  38. ];
  39. }
  40. }