一句顶一万句?大模型提示词,写一次真能用一万次!不信来试试?

本案例编号:0001

>本案例知识点:变量、字符串、字典、input()函数

>如果你已经按照上一篇文章的指引,在电脑上安装了Anaconda和Jupyter Notebook,并成功调用了DeepSeek的API,那么,接下来我们就可以一起愉快地玩耍了。此后,本公众号的一切实用案例,将以之为基础,没有做好准备的朋友,请先回看前文

下面开始今天的内容。

##1.问题预设

先问个问题:如果你经常使用大语言模型,有没有比较固定的应用场景?

我猜你有。

也许你常把他用作翻译器。一会儿你让他翻译:“急急如律令”,一会儿又让他翻译:“红红火火恍恍惚惚”,一会儿再让他翻译:“东风夜放花千树”......

如此这般,他一点儿也不累,你倒有可能累得够呛。

因为你每次都需要重复输入一遍相同的提示词!

如果你特别讲究,默念起江湖上流传的提示词秘诀,一板一眼地把“角色、背景、任务、目标”等都写进提示词,一次次地重复,那叫一个烦。

即便删繁就简,也总得交代清楚具体任务吧,诸如“请把以下文字翻译为英语:...”这般简单的命令,重复多了,也让人头疼手抖眼晕。

其他固定场景也同样如此。

上诉问题产生的原因是,DeepSeek等大模型是万用的,他为各种任务而生,你给他材料的同时必须告诉他是做哪一种任务,他才有可能完成。

有没有解决办法?

有。调用大模型的API,将万用变为专用,固定下来,反复使用。比如,让他只做翻译专员,那么喂份材料给他,他就自动生成译文;让他只做通讯专员,喂封邮件给他,他就自动写出回复文稿......不必重复输入任何提示词!

怎么做到?几行Python代码就可以实现。

##2.解决办法

直接上代码:

from openai import OpenAI

# 初始化 OpenAI 客户端,用你自己的API密钥替换掉your-api-key-here,引号保留
client = OpenAI(api_key="your-api-key-here", base_url="https://api.deepseek.com")  # 替换为你的 API 密钥

while True:

    text = input("汉译英—请输入要翻译的文字(输入 'quit' 退出): ")

    # 检查用户是否想退出
    if text == 'quit':
        print("程序退出。")
        break

    # 调用 OpenAI 的 Chat Completions API 进行翻译
    response = client.chat.completions.create(

        model="deepseek-chat",  # 注意原代码这里是gpt-4,国内无法运行,改为deepseek

        messages=[

            {"role": "system", "content": "You are a helpful assistant that translates text to English."},
            {"role": "user", "content": f"Translate the following text to English: {text}"}
        ]
    )

    # 提取并返回翻译后的文本
    translation = response.choices[0].message.content

    # 输出翻译结果
    print("汉英翻译结果: ", translation)

以上代码不用直接写,让deepseek代劳就行,我在deepseek官网窗口输入了以下提示词:

>你是一位资深程序员,请按以下要求编写一个python脚本:1.使用input函数,设置一个对话框,供用户输入文字材料;2.通过 openai 库调用 deepseek-chat 的 API,把用户输入的文字材料翻译为英语;3.返回英语译文;4.用户输入quit时退出程序

注意:本提示词自动生成的代码不能直接运行,需要一定的改动。由于deepseek采用了OpenAI的旧版调用格式,现在OpenAI的调用方法已经更新,deepseek生成的还是旧格式,所以直接运行会报错。如果你能优化提示词,生成出直接运行的代码,欢迎留言分享。

##3.运行代码

打开jupyter,新建一个文件夹并命名,这里姑且命名为“ai学ai用”(图1),以后本教程的案例代码都统一放进该文件夹中。

图片

图1.新建文件夹并命名

双击打开文件夹,如图2所示,在该文件夹下新建一个python编辑页,命名为“case0001-汉译英对话框”,把以上代码复制粘贴到新编辑页的空白框中,然后点击“运行”,即可在代码编辑框下方出现一个对话框,在对话框中输入你需要翻译的汉语文字,再点击键盘上的回车键('Enter'键),稍等即可出现结果(图3)。

图片

图2.测试代码

翻译结果出来后,如果想继续翻译其他任务,可以继续在下方的对话框中输入文字,然后再敲击键盘上的‘Enter’键,稍等就会有新任务的翻译结果。所有任务完成后,如果想退出,请在框中输入'quit',再点击键盘上的'Enter'键,即可退出(图3)。

图片

图3.退出程序的方法

至此,我们专用的汉英翻译助手成功诞生!以后只要你做汉译英任务,直接把汉语粘贴到那个对话框里,点击一下回车就可以了!

##4.举一反三

有的同学说,老师,我并不总是做汉译英,我还经常做英译汉呢!好办,你再新建一个代码编辑页,命名为“英译汉对话框”,把前面的代码原样粘贴进去,再改改提示词,让他做英译汉任务就可以了。需要修改的提示词是这一行:

{"role": "user", "content": f"Translate the following text to English: {text}"}

    单看这一行,它总体上是个字典(dictionary)类型的数据。python的字典数据有以下特征:

    1)数据用大括号{}包裹;

    2)字典中的元素由“键值”对的形式构成:键在前,值在后;键与值之间用半角的冒号隔开;键和值如果是字符串(string),需要加引号;

    如"role": "user",其中"role"是键,"user"是值,二者间用冒号隔开,二者都是字符串,都加了引号。

    3)字典中多个元素之间,用逗号间隔。如本例中"content"前的逗号。

    需要修改的提示词就是"content"键下所对应的值,即:

    f"Translate the following text to English: {text}"

    只要把"Translate the following text to English..."中的"English"改为"Chinese"即可。

    当然,最好还能改一下对话框边的说明文字,即此处:

       text = input("汉译英—请输入要翻译的文字(输入 'quit' 退出): ")

      把“汉译英”改为“英译汉”就可以了:

         text = input("英译汉—请输入要翻译的文字(输入 'quit' 退出): ")

        其他不动,我们专用的英汉翻译助手也成功诞生了!其他功能,如发邮件、改论文等,也是改改提示词和对话框说明文字就可以了。

        ##5.可能发生的问题

        在执行翻译任务时,本来应该点击回车键的时候,如果习惯性地点击“运行”,就会出错(等很久不出结果,甚至报错。图4中红圈处的梅花*标记,说明程序还在运行),此时,可以点击图4中Jupyter导航栏上的黑色方块,即可强行终止程序。然后再次点击运行,就又恢复了。

        图片

        图4.强行终止程序并恢复运行的方法

        ##6.本案例知识点

        为了配合本次课程的知识点,实现由易到难的渐进过程,本案例所用代码专门经过简化。本案例主要讲解两大知识点:变量和数据类型

        ###1)变量

        在Python中,变量是用来存储数据的容器。你可以把变量想象成一个标签或名字,它指向某个存储在计算机内存中的数据。

        举个例子:

        x = 10

          这里,x 是一个变量,它存储了数字 10。在Python中,这个等号=不是‘等于’的意思,它的意思是‘赋值’,即给x赋值为10。

          你可以把 x 想象成一个盒子,盒子里放了数字 10。

          变量的特点:

          (1)可以改变:变量的值是可以改变的。

          (2)可以存储不同类型的数据:变量可以存储数字、文本、列表等。

          1. (3)变量命名规则

            • 变量名只能包含字母、数字和下划线(_)。

            • 变量名不能以数字开头。

            • 变量名是区分大小写的(age 和 Age 是两个不同的变量)。

          回到本案例中来,本案例中的以下代码就是给变量命名+赋值:

             text = input("汉译英—请输入要翻译的文字(输入 'quit' 退出): ")

            text是变量名,变量是一种数据类型,不同于字符串,不用加引号;等号表示赋值,input()是python的内置函数,向用户提供对话框,用于接纳用户的输入数据。input()括号中的内容,如果是引导用户填写对话框的说明文字,就是字符串,需要用引号引起来。

            本行代码的意思是:用对话框的内容向变量text赋值。

            由此,我们可以看出“变量”顾名思义就是“能够变化的量”,用户往框里输入的内容是不断变化的的,用变量来承接这些内容,就可以适应这种变化。

            变量是Python的一种数据类型,变量名不能加引号,以示与字符串区分,如果加了引号,则会被视为字符串。这时,就产生了一个问题:如果变量需要用在字符串中怎么办?本案例的代码就有这种情况:

            f"Translate the following text to English: {text}"

              该行代码的主体是我们设置的大模型提示词,提示词是字符串,所以总体用引号。

              第一个“text”:“the following text"中的"text"是提示词的一部分,也是字符串,受引号直接管辖;

              第二个“text”:用大括号括住的“text”,是来自对话框的内容,是变量,用大括号包裹以示区别。此外,该大括号必须与本行最开始的f配合使用,这个 f 是字符串格式化标记,使用这种标记可以在字符串中直接插入变量或表达式,当然这些变量或表达式需要用大括号包裹起来。

              ###2)python的主要数据类型一览

              数据类型

              例子

              特点

              整数

              10

              -5

              整数值

              浮点数

              3.14

              -0.5

              带小数点的数

              字符串

              "你好"

              'Python'

              文本数据

              布尔值

              True

              False

              真或假

              列表

              [1, 2, 3]

              有序、可变

              元组

              (1, 2, 3)

              有序、不可变

              集合

              {1, 2, 3}

              无序、不重复

              字典

              {"name": "小明", "age": 18}

              键值对

              空值

              None

              表示没有值


              ##7.课后练习

              1.请修改本次案例,做一个自动回复邮件的通讯助手。

              2.请理解、识记以下概念:

              变量、字符串、字典

              图片

              微信扫码关注动态

              公众号二维码.jpg

              学习|应用|创造|分享

              欢迎转载,摘要、改编、引用等请注明出处,谢绝白嫖。

              于2025年03月12日
              评论
              添加红包

              请填写红包祝福语或标题

              红包个数最小为10个

              红包金额最低5元

              当前余额3.43前往充值 >
              需支付:10.00
              成就一亿技术人!
              领取后你会自动成为博主和红包主的粉丝 规则
              hope_wisdom
              发出的红包
              实付
              使用余额支付
              点击重新获取
              扫码支付
              钱包余额 0

              抵扣说明:

              1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
              2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

              余额充值