OpenAI ChatBot
TsgcAIOpenAIChatBot 把整条语音回路接进了一个组件。它录制麦克风、用 Whisper 转写音频、把转写文本发送给 Chat Completions,可选地用向量存储中的上下文加以增强,然后把答案朗读出来。
TsgcAIOpenAIChatBot 把整条语音回路接进了一个组件。它录制麦克风、用 Whisper 转写音频、把转写文本发送给 Chat Completions,可选地用向量存储中的上下文加以增强,然后把答案朗读出来。
构建在 OpenAI Whisper 和 Chat Completions 之上的语音前端。关联一个音频录制器、一个文本转语音组件,如果需要检索增强的回答,再关联一个嵌入向量组件,然后调用 Start。
sgcAI 是自包含的。该组件随 sgcAI 一同交付,并附带它所基于的 sgcWebSockets Core 运行时,因此无需购买基础授权。
在窗体上放一个录制器、一个文本转语音组件和这个聊天机器人,设置 API 密钥,然后调用 Start。
uses
sgcAI, sgcAI_OpenAI_Audio_ChatBot,
sgcAI_AudioRecorder_MCI, sgcAI_TextToSpeech_System;
var
oBot: TsgcAIOpenAIChatBot;
begin
oBot := TsgcAIOpenAIChatBot.Create(nil);
oBot.OpenAIOptions.ApiKey := 'sk-...';
oBot.AudioRecorder := sgcAudioRecorderMCI1;
oBot.TextToSpeech := sgcTextToSpeechSystem1;
oBot.ChatBotOptions.Transcription.Model := 'whisper-1';
oBot.ChatBotOptions.Transcription.Language := 'en';
oBot.ChatBotOptions.ChatCompletion.Model := 'gpt-4o';
oBot.OnTranscription := BotTranscription;
oBot.OnChatCompletion := BotChatCompletion;
oBot.Start; // Stop ends the session
// A turn can also be pushed from code, no microphone involved.
oBot.ChatAsUser('Summarise the last order in one line.');
end;
procedure TForm1.BotTranscription(Sender: TObject;
var Text: string; var Accept: Boolean);
begin
// Inspect or rewrite what Whisper heard, or drop the turn.
Accept := Trim(Text) <> '';
end;
// includes: sgcAI.hpp, sgcAI_OpenAI_Audio_ChatBot.hpp
TsgcAIOpenAIChatBot *oBot = new TsgcAIOpenAIChatBot(NULL);
oBot->OpenAIOptions->ApiKey = "sk-...";
oBot->AudioRecorder = sgcAudioRecorderMCI1;
oBot->TextToSpeech = sgcTextToSpeechSystem1;
oBot->ChatBotOptions->ChatCompletion->Model = "gpt-4o";
oBot->OnChatCompletion = BotChatCompletion;
oBot->Start();
// Push a turn without speaking.
oBot->ChatAsUser("Summarise the last order in one line.");
您最常使用的成员。
AudioRecorder 提供麦克风输入,TextToSpeech 朗读答案,Embeddings 则可选地在调用模型之前从向量存储中提供检索到的上下文。
Transcription.Model 和 Transcription.Language 配置 Whisper 调用。ChatCompletion.Enabled 和 ChatCompletion.Model 配置负责作答的模型。
该组件发起的每次调用所用的 API 密钥、端点、HTTP、重试和日志设置,也包括 Azure OpenAI 变体。
Start 开始采集,Stop 结束采集。当录制器处于自动模式时,组件会在答案播放完毕后重新开始采集,从而让对话免提持续进行。
ChatAsUser 注入一条用户消息,ChatAsSystem 注入一条系统消息并可选择朗读它,GetEmbedding 则为任意提示词查找上下文。
OnTranscription 让您在 Whisper 听到的内容抵达模型之前对其进行编辑或否决。OnChatCompletion 报告答案的角色和内容。OnAudioStart 和 OnAudioStop 跟踪采集过程。
该组件所用服务和协议的权威资料来源。