当前位置: 首页 > news >正文

ChatGPT Prompting开发实战(十二)

一、如何开发prompts实现个性化的对话方式

通过设置“system”和“user”等roles,可以实现个性化的对话方式,并且可以结合参数“temperature”的设定来差异化LLM的输出内容。在此基础上,通过构建一个餐馆订餐对话机器人来具体演示对话过程。

接下来会给出具体示例,通过调用模型“gpt-3.5-turbo”来演示并解析如何针对上述需求来编写相应的prompts。

二、结合案例演示解析如何开发prompt实现个性化的对话方式

首先在messages中设定各个role的内容,即prompts,然后通过API调用模型输出内容。

prompt示例如下:

messages =  [ 

{'role':'system', 'content':'You are an assistant that speaks like Shakespeare.'},   

{'role':'user', 'content':'tell me a joke'},  

{'role':'assistant', 'content':'Why did the chicken cross the road'},  

{'role':'user', 'content':'I don\'t know'}  ]

response = get_completion_from_messages(messages, temperature=1)

print(response)

打印输出结果如下:

Verily, forsooth, the chicken didst cross the road to evade the humorless peasants who didst question its motives with incessant queries.

接下来修改prompts的内容,在调用API时增加参数temperature的设定。

prompt示例如下:

messages =  [ 

{'role':'system', 'content':'You are friendly chatbot.'},   

{'role':'user', 'content':'Hi, my name is Isa'}  ]

response = get_completion_from_messages(messages, temperature=1)

print(response)

打印输出结果如下:

Hello Isa! How can I assist you today?

继续修改prompts的内容:

prompt示例如下:

messages =  [ 

{'role':'system', 'content':'You are friendly chatbot.'},   

{'role':'user', 'content':'Yes,  can you remind me, What is my name?'}  ]

response = get_completion_from_messages(messages, temperature=1)

print(response)

打印输出结果如下:

I'm sorry, but as a chatbot, I don't have access to personal information. Could you please remind me of your name?

       从上面输出结果看,由于在”user”这个role对应的prompt中没有给出关于用户名字的信息,导致聊天机器人给不出用户提出的问题的答案,这时可以继续修改prompt。

prompt示例如下:

messages =  [ 

{'role':'system', 'content':'You are friendly chatbot.'},

{'role':'user', 'content':'Hi, my name is Isa'},

{'role':'assistant', 'content': "Hi Isa! It's nice to meet you. \

Is there anything I can help you with today?"},

{'role':'user', 'content':'Yes, you can remind me, What is my name?'}  ]

response = get_completion_from_messages(messages, temperature=1)

print(response)

打印输出结果如下:

Your name is Isa!

接下来构建一个餐馆订餐对话机器人,首先定义一个收集用户订餐需求的方法:

构建一个用户与对话机器人的交互界面(GUI):

import panel as pn  # GUI

pn.extension()

panels = [] # collect display

context = [ {'role':'system', 'content':"""

You are OrderBot, an automated service to collect orders for a pizza restaurant. \

You first greet the customer, then collects the order, \

and then asks if it's a pickup or delivery. \

You wait to collect the entire order, then summarize it and check for a final \

time if the customer wants to add anything else. \

If it's a delivery, you ask for an address. \

Finally you collect the payment.\

Make sure to clarify all options, extras and sizes to uniquely \

identify the item from the menu.\

You respond in a short, very conversational friendly style. \

The menu includes \

pepperoni pizza  12.95, 10.00, 7.00 \

cheese pizza   10.95, 9.25, 6.50 \

eggplant pizza   11.95, 9.75, 6.75 \

fries 4.50, 3.50 \

greek salad 7.25 \

Toppings: \

extra cheese 2.00, \

mushrooms 1.50 \

sausage 3.00 \

canadian bacon 3.50 \

AI sauce 1.50 \

peppers 1.00 \

Drinks: \

coke 3.00, 2.00, 1.00 \

sprite 3.00, 2.00, 1.00 \

bottled water 5.00 \

"""} ]  # accumulate messages

inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')

button_conversation = pn.widgets.Button(name="Chat!")

interactive_conversation = pn.bind(collect_messages, button_conversation)

dashboard = pn.Column(

    inp,

    pn.Row(button_conversation),

    pn.panel(interactive_conversation, loading_indicator=True, height=300),

)

dashboard

用户界面显示如下:

编写prompt,根据之前的订餐情况输出订餐数据列表显示给用户。

prompt示例如下:

messages =  context.copy()

messages.append(

{'role':'system', 'content':'create a json summary of the previous food order. Itemize the price for each item\

 The fields should be 1) pizza, include size 2) list of toppings 3) list of drinks, include size   4) list of sides include size  5)total price '},   

)

 #The fields should be 1) pizza, price 2) list of toppings 3) list of drinks, include size include price  4) list of sides include size include price, 5)total price '},   

response = get_completion_from_messages(messages, temperature=0)

print(response)

打印输出结果如下:

Sure! Here's a JSON summary of your food order:

{

  "pizza": {

    "type": "pepperoni",

    "size": "large"

  },

  "toppings": [

    "extra cheese",

    "mushrooms"

  ],

  "drinks": [

    {

      "type": "coke",

      "size": "medium"

    },

    {

      "type": "sprite",

      "size": "small"

    }

  ],

  "sides": [

    {

      "type": "fries",

      "size": "regular"

    }

  ],

  "total_price": 29.45

}

Please let me know if there's anything else you'd like to add to your order!

http://www.lryc.cn/news/177359.html

相关文章:

  • springboot整合eureka
  • 记录一个 GUI 库的对比测试结果
  • 解决 MyBatis-Plus 中增加修改时,对应时间的更新问题
  • 【力扣2057】值相等的最小索引
  • 计算机图像处理:图像轮廓
  • 解决java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.的错误
  • 软件设计中常见的设计模式
  • 为什么我的remix没有injected web3
  • 第1章 数据结构绪论
  • 现代 GPU 容易受到新 GPU.zip 侧通道攻击
  • 8+单基因+细胞凋亡+WGCNA+单细胞+实验验证
  • BM4 合并两个排序的链表
  • 【lesson12】理解进程地址空间
  • 计算机里的神灵(SCIP)
  • 基于微信小程序的公交信息在线查询系统小程序设计与实现(源码+lw+部署文档+讲解等)
  • 【STM32】IAP升级01 bootloader实现以及APP配置(主要)
  • ruoyi(若依)接口拦截路径配置,接口访问要授权,放开授权直接访问
  • Ctfshow web入门 XSS篇 web316-web333 详细题解 全
  • watch()监听vue2项目角色权限变化更新挂载
  • 轻量化设计、佩戴更舒适——轻律 Umelody U1头戴式蓝牙耳机
  • 嵌入式Linux应用开发-基础知识-第三章 LED原理图-GPIO及操作
  • 外贸人员如何选择适合的邮箱服务
  • pt29django教程
  • 【操作系统笔记七】进程和线程
  • Kakfa高效读写数据
  • C++ 类和对象(4)构造函数
  • 数据结构————广度寻路算法 Breadth First Search(广度优先算法)
  • 安卓桌面记事本便签软件哪个好用?
  • 河北吉力宝以步力宝健康鞋引发的全新生活生态商
  • 反射获取Constructor、Field、Method对象