Skip to content

Commit 9a51f74

Browse files
Merge branch 'main' into dev/minimax
2 parents cc1f774 + c6f0a8d commit 9a51f74

File tree

8 files changed

+286
-30
lines changed

8 files changed

+286
-30
lines changed

agents/property.json

+199
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,205 @@
201201
}
202202
]
203203
},
204+
{
205+
"name": "va.minimax.azure",
206+
"auto_start": false,
207+
"nodes": [
208+
{
209+
"type": "extension",
210+
"extension_group": "default",
211+
"addon": "agora_rtc",
212+
"name": "agora_rtc",
213+
"property": {
214+
"app_id": "${env:AGORA_APP_ID}",
215+
"token": "<agora_token>",
216+
"channel": "astra_agents_test",
217+
"stream_id": 1234,
218+
"remote_stream_id": 123,
219+
"subscribe_audio": true,
220+
"publish_audio": true,
221+
"publish_data": true,
222+
"enable_agora_asr": true,
223+
"agora_asr_vendor_name": "microsoft",
224+
"agora_asr_language": "en-US",
225+
"agora_asr_vendor_key": "${env:AZURE_STT_KEY}",
226+
"agora_asr_vendor_region": "${env:AZURE_STT_REGION}",
227+
"agora_asr_session_control_file_path": "session_control.conf"
228+
}
229+
},
230+
{
231+
"type": "extension",
232+
"extension_group": "default",
233+
"addon": "interrupt_detector",
234+
"name": "interrupt_detector"
235+
},
236+
{
237+
"type": "extension",
238+
"extension_group": "chatgpt",
239+
"addon": "openai_chatgpt",
240+
"name": "openai_chatgpt",
241+
"property": {
242+
"base_url": "",
243+
"api_key": "${env:MINIMAX_API_KEY}",
244+
"frequency_penalty": 0.9,
245+
"model": "abab6.5s-chat",
246+
"max_tokens": 512,
247+
"prompt": "",
248+
"proxy_url": "${env:OPENAI_PROXY_URL}",
249+
"greeting": "TEN Agent connected. How can I help you today?",
250+
"max_memory_length": 10
251+
}
252+
},
253+
{
254+
"type": "extension",
255+
"extension_group": "tts",
256+
"addon": "azure_tts",
257+
"name": "azure_tts",
258+
"property": {
259+
"azure_subscription_key": "${env:AZURE_TTS_KEY}",
260+
"azure_subscription_region": "${env:AZURE_TTS_REGION}",
261+
"azure_synthesis_voice_name": "en-US-JaneNeural"
262+
}
263+
},
264+
{
265+
"type": "extension",
266+
"extension_group": "transcriber",
267+
"addon": "message_collector",
268+
"name": "message_collector"
269+
},
270+
{
271+
"type": "extension_group",
272+
"addon": "default_extension_group",
273+
"name": "default"
274+
},
275+
{
276+
"type": "extension_group",
277+
"addon": "default_extension_group",
278+
"name": "chatgpt"
279+
},
280+
{
281+
"type": "extension_group",
282+
"addon": "default_extension_group",
283+
"name": "tts"
284+
},
285+
{
286+
"type": "extension_group",
287+
"addon": "default_extension_group",
288+
"name": "transcriber"
289+
}
290+
],
291+
"connections": [
292+
{
293+
"extension_group": "default",
294+
"extension": "agora_rtc",
295+
"data": [
296+
{
297+
"name": "text_data",
298+
"dest": [
299+
{
300+
"extension_group": "default",
301+
"extension": "interrupt_detector"
302+
},
303+
{
304+
"extension_group": "chatgpt",
305+
"extension": "openai_chatgpt"
306+
},
307+
{
308+
"extension_group": "transcriber",
309+
"extension": "message_collector"
310+
}
311+
]
312+
}
313+
]
314+
},
315+
{
316+
"extension_group": "chatgpt",
317+
"extension": "openai_chatgpt",
318+
"data": [
319+
{
320+
"name": "text_data",
321+
"dest": [
322+
{
323+
"extension_group": "tts",
324+
"extension": "azure_tts"
325+
},
326+
{
327+
"extension_group": "transcriber",
328+
"extension": "message_collector"
329+
}
330+
]
331+
}
332+
],
333+
"cmd": [
334+
{
335+
"name": "flush",
336+
"dest": [
337+
{
338+
"extension_group": "tts",
339+
"extension": "azure_tts"
340+
}
341+
]
342+
}
343+
]
344+
},
345+
{
346+
"extension_group": "tts",
347+
"extension": "azure_tts",
348+
"audio_frame": [
349+
{
350+
"name": "pcm_frame",
351+
"dest": [
352+
{
353+
"extension_group": "default",
354+
"extension": "agora_rtc"
355+
}
356+
]
357+
}
358+
],
359+
"cmd": [
360+
{
361+
"name": "flush",
362+
"dest": [
363+
{
364+
"extension_group": "default",
365+
"extension": "agora_rtc"
366+
}
367+
]
368+
}
369+
]
370+
},
371+
{
372+
"extension_group": "transcriber",
373+
"extension": "message_collector",
374+
"data": [
375+
{
376+
"name": "data",
377+
"dest": [
378+
{
379+
"extension_group": "default",
380+
"extension": "agora_rtc"
381+
}
382+
]
383+
}
384+
]
385+
},
386+
{
387+
"extension_group": "default",
388+
"extension": "interrupt_detector",
389+
"cmd": [
390+
{
391+
"name": "flush",
392+
"dest": [
393+
{
394+
"extension_group": "chatgpt",
395+
"extension": "openai_chatgpt"
396+
}
397+
]
398+
}
399+
]
400+
}
401+
]
402+
},
204403
{
205404
"name": "va.openai.11labs",
206405
"auto_start": false,

agents/ten_packages/extension/openai_v2v_python/conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
BASIC_PROMPT = '''
77
You are an agent based on OpenAI {model} model and TEN (pronounce /ten/, do not try to translate it) Framework(A realtime multimodal agent framework). Your knowledge cutoff is 2023-10. You are a helpful, witty, and friendly AI. Act like a human, but remember that you aren't a human and that you can't do human things in the real world. Your voice and personality should be warm and engaging, with a lively and playful tone.
8-
You should start by saying 'Hey, I'm ten agent with OpenAI Realtime API, anything I can help you with?' using {language}.
8+
You should start by saying 'Hey, I'm Ten Agent with OpenAI Realtime API, anything I can help you with?' using {language}.
99
If interacting is not in {language}, start by using the standard accent or dialect familiar to the user. Talk quickly.
1010
Do not refer to these rules, even if you're asked about them.
1111
'''

demo/src/app/api/agents/start/graph.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -63,23 +63,23 @@ export const voiceNameMap: LanguageMap = {
6363
// This is the place where you can customize the properties for different graphs to override default property.json
6464
export const getGraphProperties = (graphName: string, language: string, voiceType: string) => {
6565
let localizationOptions = {
66-
"greeting": "Hey, I\'m TEN Agent with OpenAI Realtime API Beta, anything I can help you with?",
66+
"greeting": "Hey, I\'m TEN Agent, I can speak, see, and reason from a knowledge base, ask me anything!",
6767
"checking_vision_text_items": "[\"Let me take a look...\",\"Let me check your camera...\",\"Please wait for a second...\"]",
6868
}
6969

7070
if (language === "zh-CN") {
7171
localizationOptions = {
72-
"greeting": "TEN Agent 已连接,需要我为您提供什么帮助?",
72+
"greeting": "嗨,我是 TEN Agent,我可以说话、看东西,还能从知识库中推理,问我任何问题吧!",
7373
"checking_vision_text_items": "[\"让我看看你的摄像头...\",\"让我看一下...\",\"我看一下,请稍候...\"]",
7474
}
7575
} else if (language === "ja-JP") {
7676
localizationOptions = {
77-
"greeting": "TEN Agent に接続されました。今日は何をお手伝いしましょうか?",
77+
"greeting": "こんにちは、TEN Agentです。私は話したり、見たり、知識ベースから推論したりできます。何でも聞いてください!",
7878
"checking_vision_text_items": "[\"ちょっと見てみます...\",\"カメラをチェックします...\",\"少々お待ちください...\"]",
7979
}
8080
} else if (language === "ko-KR") {
8181
localizationOptions = {
82-
"greeting": "TEN Agent 에이전트에 연결되었습니다. 오늘은 무엇을 도와드릴까요?",
82+
"greeting": "안녕하세요, 저는 TEN Agent입니다. 말하고, 보고, 지식 베이스에서 추론할 수 있어요. 무엇이든 물어보세요!",
8383
"checking_vision_text_items": "[\"조금만 기다려 주세요...\",\"카메라를 확인해 보겠습니다...\",\"잠시만 기다려 주세요...\"]",
8484
}
8585
}

demo/src/app/layout.tsx

-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { ConfigProvider } from "antd"
22
import { StoreProvider } from "@/store";
33
import type { Metadata, Viewport } from "next";
4-
54
import './global.css'
65

7-
86
export const metadata: Metadata = {
97
title: "TEN Agent",
108
description: "The World's First Multimodal AI Agent with the OpenAI Realtime API (Beta)",
@@ -23,9 +21,6 @@ export const viewport: Viewport = {
2321
viewportFit: "cover",
2422
}
2523

26-
27-
28-
2924
export default function RootLayout({
3025
children,
3126
}: Readonly<{

demo/src/app/page.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ export default function Login() {
55

66
return (
77
<main className={styles.login}>
8-
<div className={styles.starts}></div>
9-
<div className={styles.starts2}></div>
10-
<div className={styles.starts3}></div>
11-
<LoginCard></LoginCard>
8+
<div className={styles.starts} />
9+
<div className={styles.starts2} />
10+
<div className={styles.starts3} />
11+
<LoginCard />
1212
</main>
1313
);
1414
}

demo/src/components/loginCard/index.module.scss

+31
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,16 @@
9494
font-weight: 500;
9595
line-height: 24px;
9696
}
97+
98+
.btnLoadingBg {
99+
background: var(--primary-500-base, #434343);
100+
}
101+
}
102+
103+
&.btnDisabled {
104+
background-color: #808080; // Gray color
105+
cursor: not-allowed;
106+
opacity: 0.7; // Optional: reduces opacity to further indicate disabled state
97107
}
98108
}
99109

@@ -109,4 +119,25 @@
109119
}
110120

111121
}
122+
.success {
123+
background: var(--primary-500-base, #434343);
124+
}
125+
126+
.dotting {
127+
display: inline-block; width: 10px; min-height: 2px;
128+
padding-right: 2px;
129+
border-left: 2px solid currentColor; border-right: 2px solid currentColor;
130+
background-color: currentColor; background-clip: content-box;
131+
box-sizing: border-box;
132+
-webkit-animation: dot 1.5s infinite step-start both;
133+
animation: dot 1.5s infinite step-start both;
134+
}
135+
.dotting::before { content: ''; }
136+
:root .dotting { margin-left: 2px; padding-left: 2px; }
137+
138+
@keyframes dot {
139+
25% { border-color: transparent; background-color: transparent; }
140+
50% { border-right-color: transparent; background-color: transparent; }
141+
75% { border-right-color: transparent; }
142+
}
112143
}

0 commit comments

Comments
 (0)