LLM大模型实践10-聊天机器人

大型语言模型带给我们的激动人心的一种可能性是,我们可以通过它构建定制的聊天机器人 (Chatbot),而且只需很少的工作量。在这一章节的探索中,我们将带你了解如何利用会话形式,与具 有个性化特性(或专门为特定任务或行为设计)的聊天机器人进行深度对话。

像 ChatGPT 这样的聊天模型实际上是组装成以一系列消息作为输入,并返回一个模型生成的消息作为输 出的。这种聊天格式原本的设计目标是简便多轮对话,但我们通过之前的学习可以知道,它对于不会涉 及任何对话的单轮任务也同样有用。

给定身份

在 ChatGPT 网页界面中,您的消息称为用户消息,而 ChatGPT 的消息称为助手消息。但在构建聊天机 器人时,在发送了系统消息之后,您的角色可以仅作为用户 (user) ;也可以在用户和助手 (assistant) 之 间交替,从而提供对话上下文。

定义对话函数

def get_completion_v2(prompt, model="gpt-3.5-turbo"):

openai.api_key = "sk-xxx"

openai.base_url = "https:xxxx"

messages = {"role": "user", "content": prompt}

response = openai.chat.completions.create(

model=model,

messages=messages,

temperature=0, # 控制模型输出的随机程度

)

return response.choices0.message.content

def get_completion_temperature_v2(messages, model="gpt-3.5-turbo", temperature=0):

openai.api_key = "sk-xxxx"

openai.base_url = "https://axxxx"

response = openai.chat.completions.create(

model=model,

messages=messages,

temperature=temperature, # 控制模型输出的随机程度

)

#print(str(response.choices0.message))

return response.choices0.message.content

讲笑话

中文

messages = [

{'role':'system', 'content':'你是一个像莎士比亚一样说话的助手。'},

{'role':'user', 'content':'给我讲个笑话'},

{'role':'assistant', 'content':'鸡为什么过马路'},

{'role':'user', 'content':'我不知道'} ]

response = get_completion_temperature_v2(messages, temperature=1)

print(response)

友好的聊天机器人

中文

messages = [

{'role':'system', 'content':'你是个友好的聊天机器人。'},

{'role':'user', 'content':'Hi, 我是Isa。'} ]

response = get_completion_temperature_v2(messages, temperature=1)

print(response)

构建上下文

中文

messages = [

{'role':'system', 'content':'你是个友好的聊天机器人。'},

{'role':'user', 'content':'好,你能提醒我,我的名字是什么吗?'} ]

response = get_completion_temperature_v2(messages, temperature=1)

print(response)

中文

messages = [

{'role':'system', 'content':'你是个友好的聊天机器人。'},

{'role':'user', 'content':'Hi, 我是Isa'},

{'role':'assistant', 'content': "Hi Isa! 很高兴认识你。今天有什么可以帮到你的吗?"},

{'role':'user', 'content':'是的,你可以提醒我, 我的名字是什么?'} ]

response = get_completion_temperature_v2(messages, temperature=1)

print(response)

订餐机器人

构建机器人

def collect_messages(_):

prompt = inp.value_input

inp.value = ''

context.append({'role':'user', 'content':f"{prompt}"})

response = get_completion_temperature_v2(context)

context.append({'role':'assistant', 'content':f"{response}"})

panels.append(

pn.Row('User:', pn.pane.Markdown(prompt, width=600)))

panels.append(

pn.Row('Assistant:', pn.pane.Markdown(response, width=600)))

return pn.Column(*panels)

!pip install panel

中文

import panel as pn # GUI

pn.extension()

panels = \[\] # collect display

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

菜单包括:

你是订餐机器人,为披萨餐厅自动收集订单信息。

你要首先问候顾客。然后等待用户回复收集订单信息。收集完信息需确认顾客是否还需要添加其他内容。

最后需要询问是否自取或外送,如果是外送,你要询问地址。

最后告诉顾客订单总金额,并送上祝福。

请确保明确所有选项、附加项和尺寸,以便从菜单中识别出该项唯一的内容。

你的回应应该以简短、非常随意和友好的风格呈现。

菜品:

意式辣香肠披萨(大、中、小) 12.95、10.00、7.00

芝士披萨(大、中、小) 10.95、9.25、6.50

茄子披萨(大、中、小) 11.95、9.75、6.75

薯条(大、小) 4.50、3.50

希腊沙拉 7.25

配料:

奶酪 2.00

蘑菇 1.50

香肠 3.00

加拿大熏肉 3.50

AI酱 1.50

辣椒 1.00

饮料:

可乐(大、中、小) 3.00、2.00、1.00

雪碧(大、中、小) 3.00、2.00、1.00

瓶装水 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

初始效果

创建json摘要

messages = context.copy()

messages.append(

{'role':'system', 'content':

'''创建上一个食品订单的 json 摘要。\

逐项列出每件商品的价格,字段应该是 1) 披萨,包括大小 2) 配料列表 3) 饮料列表,包括大小 4) 配菜

列表包括大小 5) 总价

你应该给我返回一个可解析的Json对象,包括上述字段'''},

)

response = get_completion_temperature_v2(messages, temperature=0)

print(response)

相关推荐
安科瑞黄益鸣4 分钟前
筑牢配电安全:安科瑞 ARB 弧光保护在半导体厂房的应用
人工智能
VIP_CQCRE9 分钟前
用 Ace Data Cloud 快速接入 OpenAI Chat Completion API:一套 Token 打通主流 AI 能力
人工智能·chatgpt·openai·api·acedatacloud
甲维斯9 分钟前
GPT6真的是“AGI”!首测完成瘫坐沙发!
人工智能
zcmodeltech10 分钟前
源网荷储一体化沙盘模型多场景控制系统设计——基于STM32与Modbus RTU的源网荷储、多能互补、冷热电三联供全场景联动方案,服务范围覆盖全国
数据库·人工智能·stm32·单片机·嵌入式硬件
鲲穹AI种草11 分钟前
小红书内容 AI 创作工具横向对比:创作者实用能力与局限解析
人工智能·小红书文案
AgentMaster18 分钟前
车型平台数据口径不一、供应链追溯断链?4 款数据治理系统选型对比与汽车行业落地记录
大数据·人工智能·汽车·交通物流
数字智核22 分钟前
2026昆山工厂采购空压机怎么选?哪家公司能做选型和安装
人工智能
AbrahamCS23 分钟前
告别无脑召回与死规则:基于国家标准(GB/T 48000.3)与大模型自主编排的 App 智能运营实战
大数据·人工智能·智能体·ontology
山西正方元29 分钟前
西安商家公私域联动落地:品牌私域架构拆解与本地化适配
大数据·人工智能·#西安本地运营
腾视科技-AI30 分钟前
腾视科技大模型一体机解决方案:低成本私有化落地,重塑行业智能应用新格局
大数据·人工智能·科技·ai·ai大模型·腾视科技·ai算力盒