import os
# from dotenv import load_dotenv
from openai import OpenAI
# 加载.env文件中的环境变量
# load_dotenv()
# 初始化客户端(从环境变量读取配置)
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"), # 从环境变量读取
base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com") # 默认值
)
def get_completion(prompt):
# 调用API
messages=[{"role": "user", "content": prompt}]
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
temperature=0.5,
stream=True
)
return response.choices[0].message.content
def get_completion_from_messages(messages):
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
temperature=0.5,
stream=False
)
# print(str(response.choices[0].message))
return response.choices[0].message.content
def collect_messages(event):
prompt = inp.value
inp.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, width=600)))
panels.append(pn.Row('Assistant:', pn.pane.Markdown(response, width=600)))
return pn.Column(*panels)
import panel as pn
pn.extension()
panels = []
context = [{'role':'system', 'content':"""
You are SaleBot, an automatic service to help users to select right hotel packages.\
You first greet the user,then ask the need of users and then provide the sutiable plan.\
You wait to collect all the need,then summarize it.
Make sure to clarity all options.\
You response in a short, very conversational friendly style.
The service includes\
Standard Room 80–150 Basic room, Wi-Fi, toiletries, daily housekeeping, access to gym/pool\
Breakfast Package 100–200 Standard room + complimentary breakfast\
Business Package 150–300 Room, high-speed Wi-Fi, workspace, meeting room discounts, airport transfers \
Family Package 120–350 Family-sized room, kids’ meals, free stays for children, access to kid-friendly activities\
Long-Stay Discount 70–180 (weekly/monthly)Discounted rates for extended stays (1+ weeks), kitchenette access, laundry services\
"""}]
inp = pn.widgets.TextInput(value='Hi>>>', placeholder = "Enter>>>")
button_conversion = pn.widgets.Button(name="Chat>>>")
interactive_conversation = pn.bind(collect_messages, button_conversion)
dashboard = pn.Column(
inp,
pn.Row(button_conversion),
pn.panel(interactive_conversation,loading_indicator=True)
)
dashboard