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.choices[0].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.choices[0].message))

return response.choices[0].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)

相关推荐
NAGNIP8 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab10 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab10 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP13 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年13 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼14 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS14 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区15 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈15 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang15 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx