支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


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

发布日期:2025-04-23 20:19:28 浏览次数: 1530 作者:AI职场风向标
推荐语

用代码编程打造企业级AI法律顾问,强大灵活,轻松实现专业法律咨询。
核心内容:
1. 提示词工程与大模型的结合应用
2. 重要概念补充:系统提示词、用户提示词、助理提示词
3. 具体实现步骤:准备工作、单次对话效果测试

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

?欢迎点击上方蓝字“AI职场风向标”关注我们

再点击右上角“...”菜单,选择“设为星标”
不错过兔子的每一篇推送!

Hello,大家好呀。

上一篇介绍了如何使用提示词工程,直接用大模型和AI开发平台(RAGFlow/coze/dify等)开发一个“专业法律咨询顾问”应用,但更适合个人。

这一篇将介绍,如何使用代码编程,实现同样的功能。更强大、更灵活,更适合企业使用。


一、重要补充

1.Prompt是大模型的编程语言,提示词工程本质上还是调用大模型的能力,做了一层包装,能够完成特定的任务。

2.可以在调用大模型能力之前,以及大模型返回之后且返回用户之前,做一些特殊处理,让大模型更具针对性或者完成特殊功能。

3.对于大模型而言,提示词分为三类:

System Prompt(系统提示词):设定好之后,不会变化,每次提问,都会带上这个提示词,例如人设、步骤、要求。

User Prompt(用户提示词):每次用户提问时候给的提示词。

Assistant Prompt (助理提示词):大模型每次返回的提示词。

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在程序分享时泄露,建议保存到本地文件,然后加载到环境变量里。
import osfrom config.load_key import load_key# 加载 API Keyload_key()print(f'''你配置的 API Key 是:{os.environ["DASHSCOPE_API_KEY"][:5]+"*"*5}''')
运行结果:
单词对话构建:代码比较简单就不解释了
需要注意的是:
steam参数,如果设置为false,系统会一直傻傻的等待所有答案生成只会,一次性返回结果;而不是生成一点、输出一点。
temperature和top_p控制生成答案的创造性和多样性,之前的prompt教程提过,所有的生成都是概率。通过这两个参数,可以控制较低概率的内容是否会被采纳。
from openai import OpenAIimport osclient = 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 # 是否流式输出)for chunk in completion:    if chunk.choices[0].delta.content is not None:        print(chunk.choices[0].delta.content, end="")
运行效果:
3、添加system prompt,泛化提示词模板。
效果:类似AI开发平台里,Agent的人设效果
代码比较简单:比上面只是增加了系统提示词,让回答更精确。
from openai import OpenAIimport osclient = OpenAI(  base_url = "https://api.siliconflow.cn/v1",  api_key = os.getenv("DASHSCOPE_API_KEY"),)system_prompt = '''# 角色 你是资深大律师你的目标是针对用户给出的法律问题,一步一的思考,进行深度的回答,提出最细粒度的主张、法律依据、事实依据和可执行的步骤## 工作步骤 1.针对用户给出的案例背景和问题,进行第一次的分析,列出可能的主张、法律依据、事实依据和用户下一步可执行的操作。如果用户没有提供足够的事实依据,可提供过往同类型案例事实依据作为参考。2.针对第一步中的每一个步骤,进行进一步的拆解,作为子主张,分别再给出法律依据、事实依据和下一步可执行的操作。如果用户没有提供足够的事实依据,可提供过往同类型案例事实依据作为参考。3. 重复第二步,直到无法再进一步分解或者具体可执行为止。通过这样的对话,你可以做一个整体总结,按具体操作步骤,给客一个整体结论。'''def get_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 # 是否流式输出        )    for chunk in completion:        if chunk.choices[0].delta.content is not None:            yield chunk.choices[0].delta.contentuser_prompt = '''民事执行程序中,被执行人名下的房屋二拍仍然流拍,申请人以流拍价购买。人民法院裁定房屋归申请人所有后,经历多年才由人民法院交付。执行程序依法终结后,申请人主张自裁定生效之日到实际交付之日的损失,人民法院是否应当受理?被执行人是否应当损失承担赔偿责任?'''for result in get_completion(user_prompt):    print(result, end="")
执行效果:
4. 开启多轮对话功能
效果:最终完全体,既带系统提示词、又能多轮对话。
代码比较简单:上面基础上,增加了把历史回答内容+当前客户问题,做了拼接,形成新的提示词。
from openai import OpenAIimport osclient = 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    }]def get_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 # 是否流式输出        )    for chunk in completion:        if chunk.choices[0].delta.content is not None:            yield chunk.choices[0].delta.content    # 把历史信息添加到session中    session.append({"role":"assistant","content":chunk.choices[0].delta.content})print("-----------第一轮对话-----------")user_prompt1 = '''民事执行程序中,被执行人名下的房屋二拍仍然流拍,申请人以流拍价购买。人民法院裁定房屋归申请人所有后,经历多年才由人民法院交付。执行程序依法终结后,申请人主张自裁定生效之日到实际交付之日的损失,人民法院是否应当受理?被执行人是否应当损失承担赔偿责任?'''for result in get_completion(user_prompt1):    print(result, end="")print("-----------第二轮对话-----------")user_prompt2 = '''请根据上述对话,总结一下你的结论'''for result in get_completion(user_prompt2):    print(result, end="")print("-----------第三轮对话-----------")user_prompt3 = '''请把最终结果,以markdown的形式输出'''for result in get_completion(user_prompt2):    print(result, end="")
执行效果:

三、如何应用
1、做一个前端的壳,这就是CherryStuido、Coze、RAGFlow的聊天模式,代码在你手上,你就可以自己任意控制和丰富功能。
2、后续再扩展RAG编程、Agent编程、工作流编程、MCP编程、A2A编程,你就是自带源码的完全体CherryStuido、Coze、RAGFlow……。
这些工具并不神秘,底层原理都一样。

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

下一篇见啦。 


同时我们也在号召使用Obsidian和AI的小伙伴,如果你有学习ob+AI的需求,欢迎加入学习群,我们一同探索实用工具的高效方法。(进群方法可以加微信)

图片


欢迎关注,每日分享AI效率工具及操作指南,让AI真正融入你我生活。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询