Spaces:
Sleeping
Sleeping
File size: 3,021 Bytes
7fad2da b0a6cf5 7fad2da b0a6cf5 fef3e18 b0a6cf5 7fad2da b0a6cf5 7fad2da b0a6cf5 7fad2da b0a6cf5 7fad2da dc1a05f 7fad2da b0a6cf5 0e59895 b0a6cf5 96f5518 7fad2da f11dc41 fef3e18 a29d4a8 f11dc41 a29d4a8 532d5ec f11dc41 7fad2da f11dc41 532d5ec |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import gradio as gr
import requests
# 设置第三方 API 基本 URL
API_BASE_URL = "http://key.aistory.uk/v1/chat/completions" # 替换为正确的API URL
API_KEY = "sk-HfD4NYIN6bq2DkSfIiUcciRvo9MkgMdFCsahP9NWEOUPHe8H" # 替换为你自己的 API 密钥
# 定义 AI 响应函数,调用第三方 API
def ai_response(message, chat_history):
# 定义系统提示词
system_prompt = "You are a helpful assistant. Please assist the user with their inquiries."
# 组合历史聊天记录和用户输入的信息
conversation = [{"role": "system", "content": system_prompt}]
for msg in chat_history:
conversation.append({"role": msg[0], "content": msg[1]})
conversation.append({"role": "user", "content": message})
# 构建请求体
payload = {
"model": "gpt-4o", # 使用 gpt-4o 模型(如果此模型为该 API 支持的模型)
"messages": conversation,
"max_tokens": 150
}
# 设置请求头,包括 API 密钥
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# 发送请求到第三方 API
try:
response = requests.post(API_BASE_URL, json=payload, headers=headers)
response.raise_for_status() # 如果响应状态码不是 2xx,会抛出异常
if response.status_code == 200:
# 获取 API 响应内容
response_data = response.json()
assistant_message = response_data['choices'][0]['message']['content']
# 返回新的聊天记录,转换为符合 gr.Chatbot 期望的元组格式
chat_history.append(("user", message))
chat_history.append(("assistant", assistant_message))
return chat_history
else:
# 如果请求失败,输出错误信息
return chat_history + [("assistant", f"API error: {response.status_code}, {response.text}")]
except requests.exceptions.RequestException as e:
# 捕获任何请求错误,并输出详细错误信息
return chat_history + [("assistant", f"Request failed: {str(e)}")]
# 创建 Gradio 应用
def create_interface():
with gr.Blocks() as demo:
# 页面标题
gr.Markdown("<h1 style='text-align: center; color: #4CAF50;'>AI驱动的孕产期用药咨询系统</h1>")
# 创建一个 Column 布局,用于将聊天记录和输入框放在同一列
with gr.Column():
# 创建一个聊天机器人输出组件,用于显示对话
chat_output = gr.Chatbot()
# 创建一个文本框用于输入消息
message_input = gr.Textbox(label="请输入你的问题", placeholder="输入你的问题并按回车发送", lines=1)
# 提交按钮,发送用户消息并获取AI回复
message_input.submit(ai_response, inputs=[message_input, chat_output], outputs=[chat_output])
return demo
# 启动 Gradio 应用
demo = create_interface()
demo.launch()
|