ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

llm基础概念学习:从监督学习到强化学习,用TaoToken统一Key跑通Prompt实验

llm基础概念学习:从监督学习到强化学习,用TaoToken统一Key跑通Prompt实验 1. 从监督学习到强化学习LLM 到底在学什么刚接触大模型时很多人会被一堆名词绕晕监督学习、无监督学习、强化学习、Prompt、Token、温度……它们看起来像四门不同的课其实讲的是同一件事的不同阶段。你可以把大模型想象成一个刚学会认字但不懂造句的小孩无监督学习让他把海量文本读了一遍知道字和字经常一起出现监督学习像老师拿着标准答案教他“这样回答才对”强化学习则是他答完之后有人告诉他“这次答得好”或者“这次不行”他慢慢学会从整体上判断什么样的回答更靠谱。这篇面向刚接触大模型的开发者目标不是把论文讲一遍而是把这三个概念串成一条线并且落到一个能跑的实验上用 TaoToken 统一 Key 和 API 通道在本地跑一次 Prompt 对比实验看看不同 Prompt 写法对同一个模型输出的影响。你会拿到可复制的config.toml骨架和settings.json配置片段还会做一次调用前后校验响应是否一致的验证动作。整条链路走通之后你对“监督学习、强化学习、Prompt”三者的关系会有一个能动手验证的理解而不是停留在概念背诵。先说清楚三者的分工。监督学习解决的是“给定输入正确输出长什么样”它依赖标注数据模型学的是输入到输出的映射。强化学习解决的是“这一整段回答最终好不好”它不要求每一步都对只看最终结果是否符合预期符合就给正向反馈让模型具备全局思考的能力。而 Prompt 是你作为使用者在推理阶段给模型的临时指令它不改变模型权重但会显著改变输出分布。换句话说监督学习和强化学习发生在训练阶段Prompt 发生在推理阶段三者共同决定你看到的回答质量。理解了这条线后面的实验才有意义。我们要做的就是固定模型和参数只改 Prompt观察输出差异从而直观感受“推理阶段的指令”有多大威力。2. TaoToken 前置准备统一 Key 与 API 通道在跑实验之前先把通道打通。TaoToken 的作用是提供一个统一的 API 入口你不需要为每个模型单独维护一套 Key 和地址用一个 Key 就能在同一个通道里切换和调用。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基础地址是 https://taotoken.net/api 。你需要先拿到自己的 API Key。进入控制台创建 Key 的入口在这里https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理页面在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。创建好之后把它保存到一个环境变量里不要硬编码进代码这是最基本的习惯。export TAOTOKEN_API_KEY你的Key如果你更习惯用图形界面验证模型是否可用可以直接打开模型对话页面https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 先手动发一句话确认通道正常。这一步很重要因为后面本地脚本报错时你能快速判断是通道问题还是代码问题。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面会说明请求格式、可用模型名和返回结构。建议先扫一眼确认你要用的模型标识符避免脚本里写错模型名导致 404。注意Key 只放在环境变量或本地配置文件里不要提交到 Git 仓库。如果不小心泄露第一时间去控制台吊销重建。3. 可复制配置config.toml 骨架与 settings.json 片段为了让实验可复现我们把配置和代码分开。先建一个项目目录结构如下llm-prompt-lab/ ├── config.toml ├── settings.json └── run_prompt.pyconfig.toml负责通道和模型参数骨架如下# config.toml [api] base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY timeout 60 [model] name gpt-4o-mini temperature 0.2 max_tokens 512 [experiment] # 两次调用使用完全相同的参数只改 prompt repeat 2 save_raw true这里有几个参数值得说明。temperature控制随机性值越低输出越稳定做对比实验时建议设成 0.2 甚至 0减少随机波动干扰。max_tokens限制单次输出长度避免长回答拖慢对比。repeat表示同一 Prompt 跑几次用来观察稳定性。settings.json放 Prompt 模板和实验元信息{ experiment_name: prompt_compare_v1, prompts: { baseline: 解释什么是监督学习。, structured: 你是一名机器学习讲师。请用三句话解释监督学习每句话不超过30字并给出一个生活例子。, step_by_step: 请先说明监督学习的定义再说明它和强化学习的区别最后给出一个分类任务的例子。分三步回答。 }, system_prompt: 你是一个严谨的技术助手回答要准确、简洁。 }baseline是朴素提问structured加了角色和格式约束step_by_step要求分步推理。这三个 Prompt 对应三种常见写法后面我们对比它们的输出差异。读取配置的 Python 代码import os import json import tomllib from openai import OpenAI with open(config.toml, rb) as f: cfg tomllib.load(f) with open(settings.json, r, encodingutf-8) as f: settings json.load(f) client OpenAI( base_urlcfg[api][base_url], api_keyos.environ[cfg[api][api_key_env]], timeoutcfg[api][timeout], )这段代码把通道、Key、模型参数都从配置里读出来换模型或换 Prompt 时不用改代码只改配置文件即可。4. 跑通 Prompt 对比实验并验证响应一致性现在写主实验脚本。核心逻辑是对每个 Prompt调用两次记录输出并做一次一致性校验。def call_model(prompt: str, system_prompt: str): resp client.chat.completions.create( modelcfg[model][name], temperaturecfg[model][temperature], max_tokenscfg[model][max_tokens], messages[ {role: system, content: system_prompt}, {role: user, content: prompt}, ], ) return resp.choices[0].message.content results {} for key, prompt in settings[prompts].items(): outputs [] for i in range(cfg[experiment][repeat]): out call_model(prompt, settings[system_prompt]) outputs.append(out) results[key] outputs print(f {key} ) for idx, o in enumerate(outputs): print(f[run {idx1}] {o}\n)运行python run_prompt.py你会看到三组输出。baseline通常比较泛可能给你一段教科书式定义structured因为限制了句数和例子输出更紧凑step_by_step会分点展开信息量更大但更长。这就是 Prompt 在推理阶段对输出分布的影响。接下来做一致性校验。因为temperature设得低同一 Prompt 两次输出应该高度相似但不保证逐字相同。我们用一个简单的相似度检查def similarity(a: str, b: str) - float: set_a, set_b set(a), set(b) if not set_a or not set_b: return 0.0 return len(set_a set_b) / len(set_a | set_b) for key, outputs in results.items(): if len(outputs) 2: sim similarity(outputs[0], outputs[1]) print(f{key}: 两次输出字符集相似度 {sim:.2f})如果相似度低于 0.6说明输出波动较大可以进一步把temperature降到 0 再跑一次。这个校验动作的意义在于确认你的实验环境是稳定的否则后面比较不同 Prompt 时你分不清差异是 Prompt 带来的还是随机性带来的。成功结果应该是三组 Prompt 都能正常返回相似度普遍在 0.7 以上且structured和step_by_step的输出明显比baseline更贴合约束。到这一步你就完成了一次可复现的 Prompt 对比实验。如果你打算长期做这类编码和 Agent 实验可以了解一下 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它更适合需要反复调用、批量对比的场景。5. 本篇常见报错排查实验跑不通时按下面顺序排查基本能覆盖大部分问题。报错一401 Unauthorized。说明 Key 没读到或无效。先确认环境变量是否在当前终端生效echo $TAOTOKEN_API_KEY。如果为空重新 export 一次。如果 Key 正确仍报 401去控制台确认 Key 是否被吊销或额度耗尽。报错二404 model not found。模型名写错了。不同通道支持的模型标识符可能不同去接入文档确认可用模型名再改config.toml里的model.name。报错三Connection timeout。网络或超时设置问题。先把timeout调到 120 试试如果仍然超时用模型对话页面手动发一条消息确认通道本身是否可达。报错四tomllib 导入失败。tomllib是 Python 3.11 才内置的。如果你用的是更低版本装tomli并改成import tomli as tomllib。报错五输出为空或截断。检查max_tokens是否太小或者 Prompt 要求太长导致被截断。适当调大max_tokens或简化 Prompt。报错六两次输出差异极大。先确认temperature是否为 0.2 以下如果已经是低温度仍波动大检查是否误用了会引入随机性的参数或者模型本身在该任务上不稳定换一个模型再试。提示每次改完配置先跑一次单 Prompt 的最小调用确认通道正常再跑完整对比能省很多排查时间。6. 把概念串起来下一步怎么练回到开头那条线监督学习让模型学会“输入到输出”的映射强化学习让模型学会“整体结果好不好”Prompt 则是你在推理阶段下的临时指令。三者不是替代关系而是不同阶段的不同手段。你没法用 Prompt 去改变模型权重但你可以用 Prompt 把模型已经学到的能力更精准地引导出来。练习建议按这个顺序走先用本篇的脚本把temperature从 0 到 1 各跑一遍观察同一 Prompt 的输出稳定性变化然后把structured里的约束逐条删掉看输出如何一步步变松散最后把step_by_step用在你自己工作里的一个真实问题上比如让它分步解释一段报错日志。每改一次记录输出差异你会对“Prompt 影响输出分布”这件事有肌肉记忆。需要查接入细节时回到文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 需要管理 Key 时回到https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。把这两个入口存进书签后面做任何模型对比实验都用得上。
返回列表