返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

AI界的普通话,用提示词工程打造“专业法律咨询顾问”应用 - 企业版

[复制链接]
链载Ai 显示全部楼层 发表于 5 小时前 |阅读模式 打印 上一主题 下一主题

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.准备工作
1)需要申请apikey,具体可参考之前文章DeepSeek和moonshot" data-itemshowtype="0" target="_blank" linktype="text" data-linktype="2">obsidian+AI系列之Text Generator配置deepseek和moonshot
2)安装python3.10以上,并安装jupyter包。
特殊说明:
1)以下代码都在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,泛化提示词模板。
效果:类似AI开发平台里,Agent的人设效果
代码比较简单:比上面只是增加了系统提示词,让回答更精确。
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="")
执行效果:
4. 开启多轮对话功能
效果:最终完全体,既带系统提示词、又能多轮对话。
代码比较简单:上面基础上,增加了把历史回答内容+当前客户问题,做了拼接,形成新的提示词。
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……。
这些工具并不神秘,底层原理都一样。

好了,这一篇提示词工程构建“专业法律咨询顾问”就到这儿了,祝愿朋友们都不要涉及法律纠纷,遇到纠纷也能维权成功。希望这篇对你有用~

下一篇见啦。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ