一、更换ClipMind API

  1. clipmind提供的网页服务大部分功能是免费的,昨天调试的时候API接口也返回正常但今天发现达到调用额度了,也就是每个账号只有6点免费的API调用额度,原本打算付费但需要谷歌支付啥的现在我还实现不了,遂放弃。
  2. 于是思考用别的方式替换思维导图生成tool的内部API调用,达到相同的效果。首先我们思考一下像ClipMind这类产品的底层逻辑:强大的基座大模型(如 GPT-4o / Claude 3.5) + 极其严苛的 System Prompt(系统提示词) + 严格的 JSON 结构化输出校验。那么如果我们有一个强大的底层模型,再自己设计一个严格的提示词,并进行JSON结构化输出的校验就可以手动实现一个类似于ClipMind的功能。
  3. 模型选择
    我选择模型的标准是拥有强大的语言理解能力和处理复杂场景的能力,因为我的目的是生成思维导图的结构化描述,类似于文转图,需要对模糊性描述有较高理解能力并在特定的学习场景下进行优秀的学习规划,如果模型返回数据不够精确会直接非常明显体现在之后前端的绘图中;其次就是可以设置结构化输出,因为我希望模型返回的格式是JSON并且遵循我设置的严格的规律,这样对之后的绘图比较方便。
    在这里插入图片描述qwenm-max支持结构化输出⬆。

二、重新定义TOOL函数

  1. 对于Agent的思维导图绘图TOOL,其实现不再依赖于ClipMind API调用,而是再调用一次大模型,这个模型和大脑LLMu不是同一个。工具中模型暂时使用qwen-max。定义一个maptool_service.py,在其中写一个generate_mindmap函数,该函数调用大模型并根据严格的prompt生成json结构化数据,将这份结构化数据解析后作为函数返回。
response = await map_client.chat.completions.create(
            model="qwen3-max", 
            messages=[
                {"role": "system", "content": MINDMAP_SYSTEM_PROMPT},
                {"role": "user", "content": prompt}
            ],
            temperature=0.3, 
            response_format={"type": "json_object"} # 强制大模型只输出 JSON
        )
        # 获取大模型返回的纯 JSON 字符串
        json_str = response.choices[0].message.content
        # 验证并解析 JSON
        mindmap_data = json.loads(json_str)
  1. 工具模型的prompt设计:
MINDMAP_SYSTEM_PROMPT = """
你现在是一个顶级的教育学专家和思维导图构建引擎。
你的唯一任务是:根据用户的学习需求,生成一份极具逻辑性、符合人类认知规律的学习计划思维导图。
【构建规则】
 3. 层级结构必须严格按照:根节点(目标) -> 一级节点(天数/模块) -> 二级节点(核心章节) -> 三级节点(具体知识点)4. 知识点的颗粒度要细,不要只写大词,要包含核心概念。
 5. 必须包含时间分配建议
【输出格式限制】
你必须且只能输出合法的 JSON 格式数据。绝对不能包含任何 Markdown 标记(如 ```json)、前言或后语。
JSON 的结构必须严格如下:
{
  "title": "思维导图中心主题",
  "children": [
    {
      "title": "第一天:XXX",
      "children": [
        {
          "title": "子模块A",
          "children": [
            { "title": "知识点1" },
            { "title": "知识点2" }
          ]
        }
      ]
    }
  ]
}

在prompt中严格定义了输出格式,并强调返回json,让大模型直接返回可解析的标准JSON字符串,无需处理多余文本,这里要注意结构化输出的使用方式:
6. 设置response_format参数:将 response_format 参数设置为 {“type”: “json_object”}。
7. 提示词中包含JSON关键词:System Message 或 User Message 中必须包含"JSON"关键词(不区分大小写),否则API会返回错误:‘messages’ must contain the word ‘json’ in some form, to use ‘response_format’ of type ‘json_object’.
以上使用注意事项来自阿里百炼平台。

三、测试效果

  1. 在FastAPI上发送用户要求,message:“请帮我生成计算机网络第一章学习的学习规划,我每天学四个小时,希望三天学完这些内容。”
    在这里插入图片描述
  2. 接口返回效果:
    在这里插入图片描述在这里插入图片描述
    可以看到接口返回了模型生成的结构化数据,满足我们预定义的格式且没有其他额外输出,可以直接用于前端绘图。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐