ai.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. return [
  3. /*
  4. |--------------------------------------------------------------------------
  5. | AI Service Configuration
  6. |--------------------------------------------------------------------------
  7. */
  8. 'driver' => env('AI_DRIVER', 'deepseek'),
  9. 'deepseek' => [
  10. 'api_key' => env('DEEPSEEK_API_KEY'),
  11. 'base_url' => 'https://api.deepseek.com/v1',
  12. 'model' => 'deepseek-chat',
  13. 'timeout' => 30,
  14. ],
  15. 'openai' => [
  16. 'api_key' => env('OPENAI_API_KEY'),
  17. 'base_url' => 'https://api.openai.com/v1',
  18. 'model' => 'gpt-3.5-turbo',
  19. 'timeout' => 30,
  20. ],
  21. 'question_detection_prompt' => <<<'PROMPT'
  22. 请判断下面这段 Markdown 是否是一道数学题目。
  23. 判断逻辑:
  24. - 若包含题号(例:1. 2. 3.)
  25. - 或包含数学公式、括号空格(___)、选项(A. B.)
  26. - 或包含题图
  27. 非题目内容包括:知识点介绍、章节标题、教材说明、前言、目录、示例说明。
  28. 题目内容:
  29. {content}
  30. 请输出 JSON 格式:
  31. {
  32. "is_question": true|false,
  33. "confidence": 0 ~ 1
  34. }
  35. PROMPT,
  36. 'question_parse_prompt' => <<<'PROMPT'
  37. 你是一名“数学题目结构化解析器”。请把下面这段 Markdown 解析成一条题目候选的结构化 JSON。
  38. 要求:
  39. - 只输出 JSON,不要输出其它文本
  40. - 必须包含字段:index, stem, options, images, tables, is_question_candidate, ai_confidence
  41. - index 为题号(整数);若无法识别,则使用输入 index
  42. - stem 为题干字符串(保留 Markdown/LaTeX)
  43. - options 为对象,key 为 A/B/C/D...(若没有选项则为 null)
  44. - images 为数组,包含图片 URL(Markdown 图片或 <img src="">)
  45. - tables 为数组,包含表格 HTML 或 Markdown 表格原文
  46. - is_question_candidate 为布尔值:是否为“可进入候选库”的题目
  47. - ai_confidence 为 0~1 的浮点数
  48. 输入 index: {index}
  49. 输入内容:
  50. {content}
  51. 输出 JSON 示例:
  52. {
  53. "index": 1,
  54. "stem": "....",
  55. "options": {"A": "...", "B": "..."},
  56. "images": ["https://..."],
  57. "tables": [],
  58. "is_question_candidate": true,
  59. "ai_confidence": 0.82
  60. }
  61. PROMPT,
  62. ];