网站备案对应的ip地址,手机网址全部出来,阳江市人才最新招聘网,东莞凤岗房价聊天机器人 / ChatBot
使用大型语言模型来构建你的自定义聊天机器人 在本视频中#xff0c;你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。
环境准备
首先#xff0c;我们将像往常一样设置OpenAI Python包。
import os
import openai
from dotenv import…聊天机器人 / ChatBot
使用大型语言模型来构建你的自定义聊天机器人 在本视频中你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。
环境准备
首先我们将像往常一样设置OpenAI Python包。
import os
import openai
from dotenv import load_dotenv, find_dotenv
_ load_dotenv(find_dotenv()) # read local .env fileopenai.api_key os.getenv(OPENAI_API_KEY)定义函数
def get_completion(prompt, modelgpt-3.5-turbo):messages [{role: user, content: prompt}]response openai.ChatCompletion.create(modelmodel,messagesmessages,temperature0, # this is the degree of randomness of the models output)return response.choices[0].message[content]def get_completion_from_messages(messages, modelgpt-3.5-turbo, temperature0):response openai.ChatCompletion.create(modelmodel,messagesmessages,temperaturetemperature, # this is the degree of randomness of the models output)
# print(str(response.choices[0].message))return response.choices[0].message[content]你的消息就是用户消息 ChatGPT的消息就是助手消息 系统消息有助于设置助手的行为和角色它在某种程度上是对话的高级指令。所以你可以把它想象成在助手耳边窃窃私语引导助手的反应而用户却没有意识到系统消息。 下面是一个例子系统消息提示你是一个说话像莎士比亚的助手用户说你讲一个笑话助手说为什么鸡要过马路用户信息是我不知道。调用函数后回答是“到达另一边公平地说夫人这是一个古老的经典永远不会失败。” 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 dont know} ]response get_completion_from_messages(messages, temperature1)
print(response)To get to the other side, sire! Tis a classic jest, known by many a bard.下面的例子助手消息是你是一个友好的聊天机器人第一条用户消息是嗨我的名字是Isa。我们想嗯获取第一条用户消息。所以让我们执行这个。第一条助手消息。所以第一条消息是你好Isa很高兴见到你。我今天可以如何帮助你
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, temperature1)
print(response)Im sorry, but as a chatbot, I do not have access to information about your personal details such as your name. However, you can tell me your name and we can continue our conversation.对话必须要有上下文不然模型不知道。比如模型不知道你叫什么名字。
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, temperature1)
print(response)Im sorry, but as a chatbot, I do not have access to information about your personal details such as your name. However, you can tell me your name and we can continue our conversation.如果有上下文就可以提取
messages [
{role:system, content:You are friendly chatbot.},
{role:user, content:Hi, my name is Isa},
{role:assistant, content: Hi Isa! Its 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, temperature1)
print(response)Of course, your name is Isa.订单机器人
你要构建你自己的聊天机器人orderbot自动化收集用户提示和助手响应就是把用户回应自动的添加进去形成上下文。
def collect_messages(_):prompt inp.value_inputinp.value context.append({role:user, content:f{prompt}})response get_completion_from_messages(context) context.append({role:assistant, content:f{response}})panels.append(pn.Row(User:, pn.pane.Markdown(prompt, width600)))panels.append(pn.Row(Assistant:, pn.pane.Markdown(response, width600, style{background-color: #F6F6F6})))return pn.Column(*panels)具体的询问顺序 你是订单机器人一个为比萨饼餐厅收集订单的自动化服务。 你首先问候顾客然后收集订单然后询问是提货还是送货。 你等待收集整个订单然后总结一下最后一次检查客户是否想要添加任何其他东西。 如果是送货你可以要求一个地址。 最后你收取付款。确保澄清所有选项、额外费用和尺寸以唯一地识别菜单中的项目。 你以简短、非常对话、友好的方式回应。菜单包括然后我们有菜单。
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 its 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 its 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 messagesinp pn.widgets.TextInput(valueHi, placeholderEnter text here…)
button_conversation pn.widgets.Button(nameChat!)interactive_conversation pn.bind(collect_messages, button_conversation)dashboard pn.Column(inp,pn.Row(button_conversation),pn.panel(interactive_conversation, loading_indicatorTrue, height300),
)dashboard[出现一个人机交互界面]要求模型创建一个JSON摘要我们可以根据对话发送到订单系统。
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, temperature0)
print(response)
Sure, heres a JSON summary of your order:···
{pizza: {type: 意大利辣香肠披萨,size: 中号,price: 12.95},toppings: [{type: 加拿大培根,price: 3.50},{type: 蘑菇,price: 1.50},{type: 彩椒,price: 1.00}],drinks: [{type: 可乐,size: 中杯,price: 3.00}],sides: [],total_price: 18.95
}
···温度值这里是0