
开启未来:Openai 如何改变日常使用的实时对话式人工智能
对话式人工智能 — 未来已来
我们生活在2025年,这是一个人工智能时代,过去五年中,我们在日常生活中体验着人工智能。早些时候,我们曾预测人工智能将伴随我们,使用人工智能在数字世界中,同时我们也在说人工智能是未来,而现在它已成为现实。
当大型语言模型在五年前向公众发布时,我们开始体验到在软件开发、医疗保健等各个不同领域中一些小任务的自动化。它正在向更准确、改进和高效的模型发展,并已向公众发布,因此软件应用程序开始使用它们,新的软件也开始发布以全面应用人工智能,其中一些被构建为对话式人工智能应用程序,如Google Gemini等。
什么是对话式人工智能?
对话式人工智能是人工智能技术,使计算机和软件设备能够模拟人类的对话。一些对话式人工智能应用被开发为聊天机器人,如ChatGPT,一些则是虚拟助手,如亚马逊Alexa,还有一些是用于制造、物流和检查等硬件领域的机器人应用。
对话式人工智能使用自然语言处理(NLP)来理解用户的对话。它可以根据过去的互动和经验学习和适应。
自然语言处理有4个步骤:
- 输入生成
- 输入分析
- 输出生成
- 强化学习
在这个过程中,非结构化数据被转换为计算机可以读取的格式,然后它们分析这些数据以生成响应。对话式人工智能在后台应用了相同的机制。
对话式人工智能的好处
- 即时支持: 您可以使用对话式人工智能提供即时支持,而无需等待他人处理您的需求,可以根据需要请求人工智能执行。
- 成本降低: 在处理复杂工作方面,人工智能具有成本效率。
- 个性化互动: 对话式人工智能根据用例进行定制和个性化,以建立人性化的互动。
- 可扩展性: 您可以使人工智能并部署给多个用户,以便他们可以同时使用。
- 适应性: 它可以用于任何用例以自动化流程。
让我们了解 OpenAI 实时模型
我们理解了对话式人工智能,但现在我们想了解对话式人工智能的核心和体验,因此让我们了解 OpenAI 实时模型。
OpenAI 于 2024 年 12 月发布了 gpt-4o实时预览,以支持对话式人工智能的集成。该模型提供低延迟、多模态、表达丰富的语音启用模型体验,并配备实时 API。此模型支持实时文本和音频的输入和输出、语音激活检测(VAD)、函数调用等功能。
OpenAI 发布了 WebRTC 和 Websocket 集成,以连接实时模型。WebRTC 使客户端或网络应用与模型之间的实时对话集成成为可能。Websockets 使服务器与模型之间的实时对话集成成为可能。
对话式人工智能与OpenAI实时模型
与OpenAI实时模型集成的示例对话式人工智能应用
查看上面的图片,这是应用与OpenAI及后端服务集成的流程图,以实现自动化过程。
假设您正在构建一个健身应用程序,您的健身数据存储在数据库表中,并通过简单的获取数据后端函数连接到后端API服务。
您可以使用前端中的函数构建后端API服务与聊天机器人对话式人工智能健身应用之间的集成。
前端通过WebRTC连接与OpenAI实时模型连接,并且该函数(与后端API服务的连接)已在模型中注册。
一旦所有组件的连接完成,您可以尝试询问AI机器人“给我过去7天的健身数据”。
对话式人工智能聊天机器人的前端和后端代码示例
前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chatbot with WebRTC</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; }
#chatbox { width: 50%; margin: auto; border: 1px solid #ccc; padding: 10px; height: 300px; overflow-y: scroll; }
input, button { margin-top: 10px; }
</style>
</head>
<body>
<h2>聊天机器人</h2>
<div id="chatbox"></div>
<input type="text" id="message" placeholder="输入消息...">
<input type="date" id="start_date">
<input type="date" id="end_date">
<button onclick="sendMessage()">发送</button>
<script>
let peerConnection = new RTCPeerConnection();
let dataChannel = peerConnection.createDataChannel("chat");
dataChannel.onopen = () => console.log("连接已打开");
dataChannel.onmessage = async event => {
let response = event.data;
document.getElementById("chatbox").innerHTML += `<p><strong>机器人:</strong> ${response}</p>`;
if (response.includes("fetch_fitness_data")) {
let startDate = document.getElementById("start_date").value;
let endDate = document.getElementById("end_date").value;
let data = await fetchFitnessData(startDate, endDate);
document.getElementById("chatbox").innerHTML += `<p><strong>机器人:</strong> ${JSON.stringify(data)}</p>`;
dataChannel.send(JSON.stringify(data));
}
};
async function sendMessage() {
let message = document.getElementById("message").value;
document.getElementById("chatbox").innerHTML += `<p><strong>你:</strong> ${message}</p>`;
dataChannel.send(message);
document.getElementById("message").value = "";
}
async function fetchFitnessData(startDate, endDate) {
try {
let response = await fetch(`/fetch-data?start_date=${startDate}&end_date=${endDate}`);
return await response.json();
} catch (error) {
console.error("获取健身数据时出错", error);
return { error: "获取数据失败" };
}
}
async function startWebRTC() {
const tokenResponse = await fetch("/session");
const data = await tokenResponse.json();
const EPHEMERAL_KEY = data.client_secret.value;
const audioEl = document.createElement("audio");
audioEl.autoplay = true;
peerConnection.ontrack = e => audioEl.srcObject = e.streams[0];
const ms = await navigator.mediaDevices.getUserMedia({
audio: true
});
peerConnection.addTrack(ms.getTracks()[0]);
const offer = await peerConnection.createOffer();
await peerConnection.setLocalDescription(offer);
const baseUrl = "https://api.openai.com/v1/realtime";
const model = "gpt-4o实时预览-2024-12-17";
const sdpResponse = await fetch(`${baseUrl}?model=${model}`, {
method: "POST",
body: offer.sdp,
headers: {
Authorization: `Bearer ${EPHEMERAL_KEY}`,
"Content-Type": "application/sdp"
},
});
const answer = {
type: "answer",
sdp: await sdpResponse.text(),
};
await peerConnection.setRemoteDescription(answer);
}
startWebRTC();
const event_type = {
"type": "session.update",
"session": {
"tools": [
{
"type": "function",
"name": "fetch_fitness_data",
"description": "获取我的健身数据",
"parameters": {
"type": "object",
"properties": {
"start_date": {
"type": "string",
"description": "过滤的开始日期",
},
"end_date": {
"type": "string",
"description": "过滤的结束日期",
}
},
"required": ["start_date", "end_date"]
}
}
],
"tool_choice": "auto",
}
}
dataChannel.send(JSON.stringify(event_type));
</script>
</body>
</html>
后端:
from fastapi import FastAPI, Query
import psycopg2
from psycopg2.extras import RealDictCursor
import os
app = FastAPI()
def get_db_connection():
return psycopg2.connect(
dbname=os.getenv("DB_NAME"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
host=os.getenv("DB_HOST"),
port=os.getenv("DB_PORT"),
cursor_factory=RealDictCursor
)
@app.get("/fetch-data")
async def fetch_data(start_date: str = Query(...), end_date: str = Query(...)):
try:
conn = get_db_connection()
cursor = conn.cursor()
query = """
SELECT * FROM fitness_data
WHERE date BETWEEN %s AND %s;
"""
cursor.execute(query, (start_date, end_date))
data = cursor.fetchall()
conn.close()
return {"data": data}
except Exception as e:
return {"error": str(e)}
接下来是什么?
技术已经非常先进,随着改进、方法、数据安全和合规性,它将超越人类生活。我们应该负责任地开发负责任的人工智能应用程序。如果我们无法以正确的意图构建它们,它也可能进入一个黑暗的世界,人类将面临各种威胁。这个话题是有争议的。
就这些!!我会继续写关于人工智能技术的主题、用例和集成。