import React, { useState, useEffect, useRef } from 'react'; export default function App() { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); // --- Gemini API 相关状态 --- const [chatOpen, setChatOpen] = useState(false); const [chatMessages, setChatMessages] = useState([ { role: 'assistant', text: '你好!我是欧阳轩的专属 AI 助理 ✨。有关商业主持或内容运营的合作,随时问我!' } ]); const [chatInput, setChatInput] = useState(''); const [isChatTyping, setIsChatTyping] = useState(false); const chatScrollRef = useRef(null); const [contactMessage, setContactMessage] = useState(''); const [isDrafting, setIsDrafting] = useState(false); const [isSent, setIsSent] = useState(false); const apiKey = ""; // 执行环境将自动提供 // 自动滚动到聊天底部 useEffect(() => { if (chatScrollRef.current) { chatScrollRef.current.scrollTop = chatScrollRef.current.scrollHeight; } }, [chatMessages, isChatTyping]); // 通用的 Gemini API 调用函数 (含指数退避机制) const callGemini = async (prompt, sysInstruct) => { const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`; const payload = { contents: [{ parts: [{ text: prompt }] }], systemInstruction: { parts: [{ text: sysInstruct }] } }; let retries = 5; let delay = 1000; while (retries > 0) { try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); if (!response.ok) throw new Error('API Request Failed'); const data = await response.json(); return data.candidates?.[0]?.content?.parts?.[0]?.text || "抱歉,AI 暂时无法响应。"; } catch (error) { retries--; if (retries === 0) return "网络不稳定,请稍后再试。"; await new Promise(resolve => setTimeout(resolve, delay)); delay *= 2; // 指数退避:1s, 2s, 4s, 8s, 16s } } }; // 处理发送聊天消息 const handleSendMessage = async (e) => { e.preventDefault(); if (!chatInput.trim() || isChatTyping) return; const userText = chatInput.trim(); setChatMessages(prev => [...prev, { role: 'user', text: userText }]); setChatInput(''); setIsChatTyping(true); const sysInstruct = `你是欧阳轩的专属AI助理。欧阳轩是一名资深主持人(擅长政府官方、庆典、媒体活动)以及内容运营专家(B站UP主,0粉起步累计738万+播放量,单支爆款276万+)。他毕业于南昌工学院播音与主持艺术专业,拥有普通话一级乙等及多项AI相关证书。 请以热情、专业、第一人称代言人的口吻回答问题。回答要简短精炼。`; const prompt = `访客提问: "${userText}"`; const reply = await callGemini(prompt, sysInstruct); setChatMessages(prev => [...prev, { role: 'assistant', text: reply }]); setIsChatTyping(false); }; // 处理 AI 留言润色 const handleDraftMessage = async () => { setIsDrafting(true); const keywords = contactMessage.trim() || "需要一名活动主持人,想聊聊合作细节。"; const sysInstruct = "你是一个专业的商务助理。请根据用户输入的关键词或简略意向,扩写、润色成一段礼貌、专业、得体的商务合作留言,用于发给资深主持人/内容运营专家欧阳轩。只需直接输出留言正文,无需任何问候或解释语。"; const prompt = `请帮我润色这段留言意向: ${keywords}`; const reply = await callGemini(prompt, sysInstruct); setContactMessage(reply); setIsDrafting(false); }; // --- API 逻辑结束 --- const navLinks = [ { name: '关于我', href: '#about' }, { name: '经历与成就', href: '#experience' }, { name: '主持风采', href: '#hosting' }, { name: '技能与证书', href: '#skills' }, { name: '联系我', href: '#contact' }, ]; return (
我是欧阳轩,毕业于南昌工学院播音与主持艺术专业。我是一位拥有敏锐“网感”和极强内容创意策划能力的运营人,同时也是一位风格稳重大气、专业严谨的主持人。我擅长从数据中提炼用户需求,反哺营销策略,实现从“声量曝光”到“交易转化”的业务闭环。
2019.07 - 至今
数码设备租赁创业 项目负责人
校园广播台 总监 | 2022.09 – 2024.06
主持风格:落落大方、稳重大气、专业严谨、掌控全局。
以最专业的职业素养对待每一场主持。
博览会 / 开幕式 / 高峰论坛 / 新闻发布会 / 启动仪式 / 文艺演出
晚会 / 晚宴 / 年会庆典 / 颁奖盛典 / 签约仪式 / 发布会
综艺娱乐 / 节目主持 / 视频拍摄 / 直播互动 / 各类音乐节
开盘仪式 / 暖场活动 / 全国车展 / 上市发布会 / 试乘试驾
AI编程证书
AI人工智能证书
人工智能证书
期待与您进行更深入的交流与合作。