ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;"> ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">这一篇将介绍,如何使用代码编程,实现同样的功能。更强大、更灵活,更适合企业使用。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;"> ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">1.Prompt是大模型的编程语言,提示词工程本质上还是调用大模型的能力,做了一层包装,能够完成特定的任务。 ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">2.可以在调用大模型能力之前,以及大模型返回之后且返回用户之前,做一些特殊处理,让大模型更具针对性或者完成特殊功能。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">3.对于大模型而言,提示词分为三类:ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">System Prompt(系统提示词):设定好之后,不会变化,每次提问,都会带上这个提示词,例如人设、步骤、要求。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">User Prompt(用户提示词):每次用户提问时候给的提示词。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">Assistant Prompt (助理提示词):大模型每次返回的提示词。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: 0.544px;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-weight: 500;font-size: 22px;line-height: 1.4;user-select: text;text-align: start;background-color: rgb(255, 255, 255);visibility: visible;box-sizing: border-box !important;overflow-wrap: break-word !important;">4.大模型本身没有记忆,所以多轮对话,都需要把每次对话的历史,以及当前用户的提问拼接在一起,组装成新的提示词给到大模型,大模型才会联系上下文进行回答。1)需要申请apikey,具体可参考之前文章DeepSeek和moonshot" data-itemshowtype="0" target="_blank" linktype="text" data-linktype="2">obsidian+AI系列之Text Generator配置deepseek和moonshot2)安装python3.10以上,并安装jupyter包。2)本次教程,大模型用的“硅基流动”的deepseek-r1大模型,其他供应商和模型的写法见上述写的文章。3)本教程没有开发前端代码(下一篇会单独写如何构建前后端),所以用的程序模拟用户提问(user_prompt),效果和前端输入一样。2、小试牛刀,不加system prompt来个单次对话第一段:读取你的apikey,为了防止apikey在程序分享时泄露,建议保存到本地文件,然后加载到环境变量里。importosfromconfig.load_keyimportload_key#加载APIKeyload_key()print(f'''你配置的APIKey是:{os.environ["DASHSCOPE_API_KEY"][:5]+"*"*5}''')steam参数,如果设置为false,系统会一直傻傻的等待所有答案生成只会,一次性返回结果;而不是生成一点、输出一点。temperature和top_p控制生成答案的创造性和多样性,之前的prompt教程提过,所有的生成都是概率。通过这两个参数,可以控制较低概率的内容是否会被采纳。fromopenaiimportOpenAIimportosclient=OpenAI(base_url="https://api.siliconflow.cn/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),)prompt='''民事执行程序中,被执行人名下的房屋二拍仍然流拍,申请人以流拍价购买。人民法院裁定房屋归申请人所有后,经历多年才由人民法院交付。执行程序依法终结后,申请人主张自裁定生效之日到实际交付之日的损失,人民法院是否应当受理?被执行人是否应当损失承担赔偿责任?'''completion=client.chat.completions.create(model="deepseek-ai/DeepSeek-R1",messages=[{"role":"user","content":prompt}],temperature=0.6,top_p=0.7,max_tokens=4096,stream=True#是否流式输出)forchunkincompletion:ifchunk.choices[0].delta.contentisnotNone:print(chunk.choices[0].delta.content,end="")3、添加system prompt,泛化提示词模板。代码比较简单:比上面只是增加了系统提示词,让回答更精确。fromopenaiimportOpenAIimportosclient=OpenAI(base_url="https://api.siliconflow.cn/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),)system_prompt='''#角色你是资深大律师你的目标是针对用户给出的法律问题,一步一的思考,进行深度的回答,提出最细粒度的主张、法律依据、事实依据和可执行的步骤##工作步骤1.针对用户给出的案例背景和问题,进行第一次的分析,列出可能的主张、法律依据、事实依据和用户下一步可执行的操作。如果用户没有提供足够的事实依据,可提供过往同类型案例事实依据作为参考。2.针对第一步中的每一个步骤,进行进一步的拆解,作为子主张,分别再给出法律依据、事实依据和下一步可执行的操作。如果用户没有提供足够的事实依据,可提供过往同类型案例事实依据作为参考。3.重复第二步,直到无法再进一步分解或者具体可执行为止。通过这样的对话,你可以做一个整体总结,按具体操作步骤,给客一个整体结论。'''defget_completion(prompt):completion=client.chat.completions.create(model="deepseek-ai/DeepSeek-R1",messages=[{"role":"system","content":system_prompt},{"role":"user","content":prompt}],temperature=0.6,top_p=0.7,max_tokens=4096,stream=True#是否流式输出)forchunkincompletion:ifchunk.choices[0].delta.contentisnotNone:yieldchunk.choices[0].delta.contentuser_prompt='''民事执行程序中,被执行人名下的房屋二拍仍然流拍,申请人以流拍价购买。人民法院裁定房屋归申请人所有后,经历多年才由人民法院交付。执行程序依法终结后,申请人主张自裁定生效之日到实际交付之日的损失,人民法院是否应当受理?被执行人是否应当损失承担赔偿责任?'''forresultinget_completion(user_prompt):print(result,end="")代码比较简单:上面基础上,增加了把历史回答内容+当前客户问题,做了拼接,形成新的提示词。fromopenaiimportOpenAIimportosclient=OpenAI(base_url="https://api.siliconflow.cn/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),)system_prompt='''#角色你是资深大律师你的目标是针对用户给出的法律问题,一步一的思考,进行深度的回答,提出最细粒度的主张、法律依据、事实依据和可执行的步骤##工作步骤1.针对用户给出的案例背景和问题,进行第一次的分析,列出可能的主张、法律依据、事实依据和用户下一步可执行的操作。如果用户没有提供足够的事实依据,可提供过往同类型案例事实依据作为参考。2.针对第一步中的每一个步骤,进行进一步的拆解,作为子主张,分别再给出法律依据、事实依据和下一步可执行的操作。如果用户没有提供足够的事实依据,可提供过往同类型案例事实依据作为参考。3.重复第二步,直到无法再进一步分解或者具体可执行为止。通过这样的对话,你可以做一个整体总结,按具体操作步骤,给客一个整体结论。'''session=[{"role":"system","content":system_prompt}]defget_completion(prompt):session.append({"role":"user","content":prompt})completion=client.chat.completions.create(model="deepseek-ai/DeepSeek-R1",messages=session,temperature=0.6,top_p=0.7,max_tokens=4096,stream=True#是否流式输出)forchunkincompletion:ifchunk.choices[0].delta.contentisnotNone:yieldchunk.choices[0].delta.content#把历史信息添加到session中session.append({"role":"assistant","content":chunk.choices[0].delta.content})print("-----------第一轮对话-----------")user_prompt1='''民事执行程序中,被执行人名下的房屋二拍仍然流拍,申请人以流拍价购买。人民法院裁定房屋归申请人所有后,经历多年才由人民法院交付。执行程序依法终结后,申请人主张自裁定生效之日到实际交付之日的损失,人民法院是否应当受理?被执行人是否应当损失承担赔偿责任?'''forresultinget_completion(user_prompt1):print(result,end="")print("-----------第二轮对话-----------")user_prompt2='''请根据上述对话,总结一下你的结论'''forresultinget_completion(user_prompt2):print(result,end="")print("-----------第三轮对话-----------")user_prompt3='''请把最终结果,以markdown的形式输出'''forresultinget_completion(user_prompt2):print(result,end="")1、做一个前端的壳,这就是CherryStuido、Coze、RAGFlow的聊天模式,代码在你手上,你就可以自己任意控制和丰富功能。2、后续再扩展RAG编程、Agent编程、工作流编程、MCP编程、A2A编程,你就是自带源码的完全体CherryStuido、Coze、RAGFlow……。好了,这一篇提示词工程构建“专业法律咨询顾问”就到这儿了,祝愿朋友们都不要涉及法律纠纷,遇到纠纷也能维权成功。希望这篇对你有用~下一篇见啦。 |