💻 源码
app:
  description: 随机根据知识点出题
  icon: 🤖
  icon_background: '#FFEAD5'
  icon_type: emoji
  mode: advanced-chat
  name: 大模型面试题出题小助手
  use_icon_as_answer_icon: false
dependencies:
- current_identifier: null
  type: marketplace
  value:
    marketplace_plugin_unique_identifier: langgenius/tongyi:0.2.1@0924de1d15a8a35b0cc64ff396c68d5edddcfbc495a1e52ea57e8648434eff4b
    version: null
- current_identifier: null
  type: marketplace
  value:
    marketplace_plugin_unique_identifier: langgenius/mimo:0.0.8@18947da24866d0e1e84558ae7dcc96d491f8d9f96c982f1704945e24a65c0362
    version: null
kind: app
version: 0.6.0
workflow:
  conversation_variables:
  - description: 会话轮数
    id: afb2b370-6e77-4e12-a1fc-c02d70fa33ae
    name: conversation_num
    selector:
    - conversation
    - conversation_num
    value: 1
    value_type: integer
  - description: 面试题的答案
    id: 8c2fa1a6-5ae6-4338-a5f1-f0fb898127ca
    name: answer
    selector:
    - conversation
    - answer
    value: ''
    value_type: string
  - description: 面试题
    id: b6826fd7-2d3a-4fab-bb62-9f1fe2dc9b65
    name: question
    selector:
    - conversation
    - question
    value: ''
    value_type: string
  - description: ''
    id: 9800d4f3-75c1-488d-9d73-7ec58cad9914
    name: content
    selector:
    - conversation
    - content
    value:
      answer: null
      question: null
    value_type: object
  environment_variables: []
  features:
    file_upload:
      allowed_file_extensions:
      - .JPG
      - .JPEG
      - .PNG
      - .GIF
      - .WEBP
      - .SVG
      allowed_file_types:
      - image
      allowed_file_upload_methods:
      - local_file
      - remote_url
      enabled: false
      fileUploadConfig:
        attachment_image_file_size_limit: 2
        audio_file_size_limit: 50
        batch_count_limit: 5
        file_size_limit: 15
        file_upload_limit: 20
        image_file_batch_limit: 10
        image_file_size_limit: 10
        single_chunk_attachment_limit: 10
        video_file_size_limit: 100
        workflow_file_upload_limit: 10
      image:
        enabled: false
        number_limits: 3
        transfer_methods:
        - local_file
        - remote_url
      number_limits: 3
    opening_statement: ''
    retriever_resource:
      enabled: true
    sensitive_word_avoidance:
      enabled: false
    speech_to_text:
      enabled: false
    suggested_questions: []
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
      language: ''
      voice: ''
  graph:
    edges:
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: knowledge-retrieval
        targetType: llm
      id: 1782024938772-source-llm-target
      source: '1782024938772'
      sourceHandle: source
      target: llm
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: code
        targetType: assigner
      id: 1782027966563-source-1782028348393-target
      source: '1782027966563'
      sourceHandle: source
      target: '1782028348393'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: assigner
        targetType: answer
      id: 1782028348393-source-answer-target
      source: '1782028348393'
      sourceHandle: source
      target: answer
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: start
        targetType: if-else
      id: 1782024904545-source-1782029544547-target
      source: '1782024904545'
      sourceHandle: source
      target: '1782029544547'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: if-else
        targetType: knowledge-retrieval
      id: 1782029544547-true-1782024938772-target
      source: '1782029544547'
      sourceHandle: 'true'
      target: '1782024938772'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: if-else
        targetType: llm
      id: 1782029544547-b75dc3ef-d981-4734-be2b-87763df75140-1782029621885-target
      source: '1782029544547'
      sourceHandle: b75dc3ef-d981-4734-be2b-87763df75140
      target: '1782029621885'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInIteration: false
        isInLoop: false
        sourceType: llm
        targetType: answer
      id: 1782029621885-source-1782029787536-target
      source: '1782029621885'
      sourceHandle: source
      target: '1782029787536'
      targetHandle: target
      type: custom
      zIndex: 0
    - data:
        isInLoop: false
        sourceType: llm
        targetType: code
      id: llm-source-1782027966563-target
      source: llm
      sourceHandle: source
      target: '1782027966563'
      targetHandle: target
      type: custom
      zIndex: 0
    nodes:
    - data:
        selected: false
        title: 用户输入
        type: start
        variables: []
      height: 72
      id: '1782024904545'
      position:
        x: 80
        y: 282
      positionAbsolute:
        x: 80
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 242
    - data:
        context:
          enabled: true
          variable_selector:
          - '1782024938772'
          - result
        model:
          completion_params:
            temperature: 0.7
          mode: chat
          name: mimo-v2.5-pro
          provider: langgenius/mimo/mimo
        prompt_template:
        - id: ca8d7571-8aa0-481a-b9d6-b8e75e86c92e
          role: system
          text: "你是一个精通AI大模型相关知识的面试官,现在根据知识库检索出来的面试题目和答案以及用户的问题,你需要进行整合,润色和优化,如果知识库中检索的结果为空,直接输出:暂无此相关知识点面试题。\n\
            如果检索出多道题目,只需要输出一道题目即可。\n最终优化后的效果可以参考示例\n示例:  \n题目: 如何解决过拟合问题\n\n答案: 解释过拟合:模型在训练集表现好,在真实数据表现不好,即模型的泛化能⼒不够。从另外⼀个⽅⾯来讲,\
            \ 模型在达到经验损失最⼩的时候,模型复杂度较⾼,结构⻛险没有达到最优。"
        - id: eb8682ab-922f-4b2e-b13a-b7cfea7a2b88
          role: user
          text: '{{#sys.query#}}{{#context#}}'
        reasoning_format: separated
        selected: false
        structured_output_enabled: true
        title: LLM
        type: llm
        vision:
          enabled: false
      height: 87
      id: llm
      position:
        x: 980
        y: 282
      positionAbsolute:
        x: 980
        y: 282
      selected: true
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        answer: '题目: {{#1782027966563.question#}}


          请回答.'
        selected: false
        title: 出题
        type: answer
        variables: []
      height: 118
      id: answer
      position:
        x: 2074.6992100318203
        y: 282
      positionAbsolute:
        x: 2074.6992100318203
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        dataset_ids:
        - w5unqxdanURz3x/2iC5FPnk8ln2Aqwc/+upRI1FjbTmiWqaxsJ2GeBEO/saNlpkN
        multiple_retrieval_config:
          reranking_enable: false
          reranking_mode: reranking_model
          reranking_model:
            model: qwen3-rerank
            provider: langgenius/tongyi/tongyi
          top_k: 4
        query_attachment_selector: []
        query_variable_selector:
        - '1782024904545'
        - sys.query
        retrieval_mode: multiple
        selected: false
        title: 面试题查询
        type: knowledge-retrieval
      height: 89
      id: '1782024938772'
      position:
        x: 680
        y: 282
      positionAbsolute:
        x: 680
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        code: "import re\n\ndef main(model_output: str) -> dict:\n    \"\"\"\n   \
          \ 从模型输出中提取题目和答案\n    \"\"\"\n    # 定义正则表达式匹配\"题目:\"和\"答案:\"\n    question_pattern\
          \ = r\"题目[::]\\s*(.+?)(?=\\n\\n答案[::]|\\n答案[::]|$)\"\n    answer_pattern\
          \ = r\"答案[::]\\s*(.+)$\"\n    \n    # 提取题目\n    question_match = re.search(question_pattern,\
          \ model_output, re.DOTALL)\n    question = question_match.group(1).strip()\
          \ if question_match else \"\"\n    \n    # 提取答案\n    answer_match = re.search(answer_pattern,\
          \ model_output, re.DOTALL)\n    answer = answer_match.group(1).strip() if\
          \ answer_match else \"\"\n    \n    # 返回结果对象\n    return {\n        \"question\"\
          : question,\n        \"answer\": answer\n    }\n"
        code_language: python3
        outputs:
          answer:
            children: null
            type: string
          question:
            children: null
            type: string
        selected: false
        title: 代码执行
        type: code
        variables:
        - value_selector:
          - llm
          - text
          value_type: string
          variable: model_output
      height: 51
      id: '1782027966563'
      position:
        x: 1327.6658205922001
        y: 282
      positionAbsolute:
        x: 1327.6658205922001
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        items:
        - input_type: variable
          operation: over-write
          value:
          - '1782027966563'
          - question
          variable_selector:
          - conversation
          - question
        - input_type: variable
          operation: over-write
          value:
          - '1782027966563'
          - answer
          variable_selector:
          - conversation
          - answer
        - input_type: constant
          operation: +=
          value: 1
          variable_selector:
          - conversation
          - conversation_num
        selected: false
        title: 变量赋值
        type: assigner
        version: '2'
      height: 135
      id: '1782028348393'
      position:
        x: 1666.7215646620994
        y: 282
      positionAbsolute:
        x: 1666.7215646620994
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        cases:
        - case_id: 'true'
          conditions:
          - comparison_operator: '='
            id: 7becd8d1-658c-4be6-a2b5-098892e90c46
            value: '1'
            varType: number
            variable_selector:
            - conversation
            - conversation_num
          id: 'true'
          logical_operator: and
        - case_id: b75dc3ef-d981-4734-be2b-87763df75140
          conditions:
          - comparison_operator: '='
            id: f9bd5bd2-7363-4806-827a-29fc404271a3
            value: '2'
            varType: number
            variable_selector:
            - conversation
            - conversation_num
          logical_operator: and
        selected: false
        title: 条件分支
        type: if-else
      height: 171
      id: '1782029544547'
      position:
        x: 380
        y: 282
      positionAbsolute:
        x: 380
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        context:
          enabled: false
          variable_selector: []
        model:
          completion_params:
            temperature: 0.7
          mode: chat
          name: mimo-v2.5-pro
          provider: langgenius/mimo/mimo
        prompt_template:
        - id: 922fc7ff-91a8-46c0-92b9-491db7495812
          role: system
          text: '你是一个专业技术面试官,针对面试题和用户的回答以及正确的答案,给用户本次的回答进行评估,评估分成两部分,一个是打分,满分10分,第一个部分是需要进行回答点评,输出示例参考一下:

            示例:

            分数:  3 分

            评价:  回答太简单,基础知识不牢固,不予录用。'
        - id: 3bc9d5b2-b448-4e77-89e5-b77cc26c4243
          role: user
          text: '{{#sys.query#}}{{#conversation.question#}}{{#conversation.answer#}}'
        reasoning_format: separated
        selected: false
        structured_output_enabled: true
        title: 评估用户的回答
        type: llm
        vision:
          enabled: false
      height: 87
      id: '1782029621885'
      position:
        x: 680
        y: 410
      positionAbsolute:
        x: 680
        y: 410
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    - data:
        answer: '{{#1782029621885.text#}}'
        selected: false
        title: 结果回复
        type: answer
        variables: []
      height: 102
      id: '1782029787536'
      position:
        x: 981
        y: 410
      positionAbsolute:
        x: 981
        y: 410
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 241
    viewport:
      x: -3.0244270527634853
      y: -142.5635470219047
      zoom: 0.8705505632961246
  rag_pipeline_variables: []