腾讯云AI代码助手编程挑战赛——5分钟用混元大模型生成AI对话机器人
5 分钟用还原大模型 小白搭建自己的 AI对话机器人 附代码
腾讯云AI代码助手编程挑战赛——5分钟用混元大模型生成AI对话机器人
作品简介
这段代码是一个简单的聊天机器人实现,它使用了腾讯云的 Hunyuan 服务来生成对话回复。主要代码由腾讯云AI代码助手生成,如果说两年前AI生成代码会生成很多幻觉的东西,但是在今天,描述清楚需求的情况下,基本上已经 80%可用了。
以下是代码的主要部分和功能的介绍(代码在文末)
技术架构
环境配置与依赖管理
Python环境:代码是用Python编写的,依赖于Python的标准库和第三方库。
第三方库:
tencentcloud:腾讯云的SDK,用于与腾讯云的Hunyuan服务进行交互。
gradio:用于快速创建Web界面,使得用户可以通过浏览器与聊天机器人互动。
日志记录
使用Python的logging模块来记录信息和错误,有助于调试和监控应用的运行状态。
腾讯云Hunyuan服务集成
认证:通过credential.Credential类使用从环境变量中获取的SecretId和SecretKey进行身份验证。
客户端配置:使用ClientProfile和HttpProfile来配置Hunyuan服务的客户端。
API调用:通过hunyuan_client.HunyuanClient实例调用Hunyuan服务的API。
业务逻辑
获取Hunyuan客户端:get_hunyuan_client函数负责初始化并返回一个Hunyuan客户端实例。
获取聊天补全内容:get_chat_completion函数接受用户消息,构建API请求,调用Hunyuan服务,并解析响应以获取机器人的回复。
用户界面
使用Gradio库创建一个简单的Web界面,允许用户输入他们的消息,并显示机器人的回复。
界面包括:
一个文本输入框,用户可以在其中输入他们的消息。
一个文本输出框,用于显示Hunyuan的回复。
界面的标题和描述提供了关于如何使用界面的信息。
主程序流程
在__main__块中,首先初始化Hunyuan客户端。
如果客户端初始化成功,创建并启动Gradio界面。
技术栈总结
编程语言:Python
大模型:腾讯云Hunyuan
前端界面:Gradio
日志记录:Python logging模块
异常处理:Python异常处理机制
运行流程
用户运行脚本,初始化Hunyuan客户端。
如果客户端初始化成功,Gradio界面启动并在浏览器中打开。
用户在界面的输入框中输入消息。
消息被发送到chatbot_interface函数,该函数调用get_chat_completion来获取回复。
回复显示在界面的输出框中。
这段代码展示了一个简单的聊天机器人后端和前端的集成,使用了云服务进行智能回复,并通过Web界面与用户交互。
实现过程
开发环境、开发流程
申请购买混元大模型API
本项目使用的混元大模型,购买地址点击混元大模型,如果是学习体验用的话hunyuan-standard就够用
购买完大模型后,需要在云控制台申请一下 API id 和 secret,步骤可以参考混元API 密钥申请
产品开发了解点击混元大模型API 文档
申请到API 密钥后需要,配置永久环境变量export TENCENTCLOUD_SECRET_ID='your_secret_id'export TENCENTCLOUD_SECRET_KEY='your_secret_key'
安装所需的requirmentspip install --upgrade tencentcloud-sdk-python gradio
运行项目
关键技术解析
腾讯云AI代码助手在上述过程中的助力
安装腾讯云AI 代码助手,点击安装步骤AI 代码助手安装步骤
生成基本测试功能,封装函数,优化代码,增加功能,生成前端界面
使用说明
python chatbot.py
浏览器输入 http://127.0.0.1:7860
然后输入提问点击 submit
效果展示

import os
import json
import logging
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models
import gradio as gr
# 配置日志记录
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# 配置信息
ENDPOINT = "hunyuan.tencentcloudapi.com"
def get_hunyuan_client():
"""
初始化并返回一个 HunyuanClient 对象。
:return: HunyuanClient 对象
:raises: ValueError, TencentCloudSDKException
"""
try:
# 从环境变量中获取腾讯云的 SecretId 和 SecretKey
secret_id = os.environ.get('TENCENTCLOUD_SECRET_ID')
secret_key = os.environ.get('TENCENTCLOUD_SECRET_KEY')
if not secret_id or not secret_key:
logger.error("TENCENTCLOUD_SECRET_ID 或 TENCENTCLOUD_SECRET_KEY 环境变量未设置")
raise ValueError("缺少必要的环境变量")
# 实例化一个认证对象
cred = credential.Credential(secret_id, secret_key)
# 实例化 http 选项
httpProfile = HttpProfile()
httpProfile.endpoint = "hunyuan.tencentcloudapi.com"
# 实例化 client 选项
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化 HunyuanClient 对象
client = hunyuan_client.HunyuanClient(cred, "", clientProfile)
logger.info("成功初始化 HunyuanClient")
return client
except TencentCloudSDKException as e:
logger.error(f"腾讯云SDK异常: {e}")
raise
except Exception as e:
logger.error(f"发生错误: {e}")
raise
def get_chat_completion(client, message):
"""
使用 Hunyuan 客户端获取聊天补全内容。
"""
try:
req = models.ChatCompletionsRequest()
params = {
"Model": "hunyuan-functioncall",
"Stream": False,
"Messages": [
{
"Role": "user",
"Content": message
}
],
# ...(其他参数保持不变)
}
req.from_json_string(json.dumps(params))
resp = client.ChatCompletions(req)
resp_content = json.loads(resp.to_json_string())['Choices'][0]['Message']['Content']
return resp_content # 假设响应中包含 Content 字段
except TencentCloudSDKException as e:
logger.error(f"腾讯云SDK异常: {e}")
return None
except Exception as e:
logger.error(f"发生错误: {e}")
return None
# Gradio 界面定义
def chatbot_interface(message):
if message.strip() == '':
return "请输入一些内容。"
content = get_chat_completion(client, message)
if content:
return content
else:
return "未能获取到回复内容。"
if __name__ == "__main__":
client = get_hunyuan_client()
if client:
# 创建 Gradio 界面
demo = gr.Interface(
fn=chatbot_interface,
inputs=gr.Textbox(lines=2, placeholder="输入您想要聊天的内容..."),
outputs=gr.Textbox(placeholder="HunYuan 的回复将显示在这里..."),
title="Boya 的 聊天机器人",
description="与 Boya 聊天机器人进行对话。输入 '退出' 来结束对话。"
)
demo.launch()
更多推荐
所有评论(0)