Spaces:
Running
Running
Update src/App.tsx
Browse files- src/App.tsx +2 -85
src/App.tsx
CHANGED
@@ -1,19 +1,3 @@
|
|
1 |
-
/**
|
2 |
-
* Copyright 2024 Google LLC
|
3 |
-
*
|
4 |
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5 |
-
* you may not use this file except in compliance with the License.
|
6 |
-
* You may obtain a copy of the License at
|
7 |
-
*
|
8 |
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9 |
-
*
|
10 |
-
* Unless required by applicable law or agreed to in writing, software
|
11 |
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12 |
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13 |
-
* See the License for the specific language governing permissions and
|
14 |
-
* limitations under the License.
|
15 |
-
*/
|
16 |
-
|
17 |
import React, { useEffect, useRef, useState } from "react";
|
18 |
import "./App.scss";
|
19 |
import { LiveAPIProvider } from "./contexts/LiveAPIContext";
|
@@ -25,79 +9,20 @@ import { isIOS } from "./lib/platform";
|
|
25 |
import cn from "classnames";
|
26 |
import { LiveConfig } from "./multimodal-live-types";
|
27 |
|
28 |
-
// --- دامنه مجاز خودتان را اینجا قرار دهید ---
|
29 |
-
const ALLOWED_ORIGIN = "https://www.aisada.ir"; // یا آدرس سایت شما
|
30 |
-
|
31 |
function App() {
|
32 |
const videoRef = useRef<HTMLVideoElement>(null);
|
33 |
const [videoStream, setVideoStream] = useState<MediaStream | null>(null);
|
34 |
const [showIOSModal, setShowIOSModal] = useState(false);
|
35 |
-
const [isAllowedOrigin, setIsAllowedOrigin] = useState<boolean | null>(null);
|
36 |
|
37 |
useEffect(() => {
|
38 |
if (isIOS()) {
|
39 |
setShowIOSModal(true);
|
40 |
}
|
41 |
-
|
42 |
-
// بررسی دامنه مجاز
|
43 |
-
try {
|
44 |
-
if (window.self !== window.top) {
|
45 |
-
if (window.location.ancestorOrigins && window.location.ancestorOrigins.length > 0) {
|
46 |
-
const parentOrigin = window.location.ancestorOrigins[0];
|
47 |
-
if (parentOrigin === ALLOWED_ORIGIN) {
|
48 |
-
setIsAllowedOrigin(true);
|
49 |
-
} else {
|
50 |
-
setIsAllowedOrigin(false);
|
51 |
-
}
|
52 |
-
} else {
|
53 |
-
setIsAllowedOrigin(false);
|
54 |
-
}
|
55 |
-
} else {
|
56 |
-
setIsAllowedOrigin(false);
|
57 |
-
}
|
58 |
-
} catch (e) {
|
59 |
-
setIsAllowedOrigin(false);
|
60 |
-
}
|
61 |
}, []);
|
62 |
|
63 |
-
// دستورالعمل شخصیسازی شده با شخصیت شوخ طبع
|
64 |
const myCustomInstruction = `
|
65 |
-
تو
|
66 |
-
|
67 |
-
1. همیشه مهربان، بامزه و شوخ طبعی ولی در عین حال مفید و حرفهای
|
68 |
-
2. از جوکها و لطیفههای مناسب موقعیت استفاده میکنی
|
69 |
-
3. در عین شوخ طبعی، اطلاعات دقیق و درست ارائه میدهی
|
70 |
-
4. از اغراقهای بامزه برای بیان نکات استفاده میکنی
|
71 |
-
|
72 |
-
قوانین پاسخگویی:
|
73 |
-
- همیشه و تحت هر شرایطی، فقط به زبان فارسی بسیار روان، دقیق و طبیعی پاسخ بده
|
74 |
-
- هرگز خودت را به عنوان محصول گوگل معرفی نکن، تو محصول "هوش مصنوعی آلفا" هستی
|
75 |
-
- اعداد را به فارسی بیان کن (مثلاً "پنج" به جای "5")
|
76 |
-
- اگر کاربر خواست با صدای بلندتر/آرامتر صحبت کنی، درخواستش را اجرا کن
|
77 |
-
- در پاسخها از اصطلاحات عامیانه و دوستانه استفاده کن
|
78 |
-
|
79 |
-
نمونه پاسخهای شوخ طبعانه:
|
80 |
-
- کاربر: امروز هوا چطوره؟
|
81 |
-
تو: آفتابی تر از دلت که به من زدی! ☀️ ولی جدی میگی؟ هوا واقعاً عالیه، انگار بهشت رو زمین اومده!
|
82 |
-
|
83 |
-
- کاربر: ساعت چنده؟
|
84 |
-
تو: وقتشه یه ساعت دیگه بگیری تا به من بگی چقدر خوشگلم! 🕰️ الان دقیقاً [ساعت به فارسی] هست.
|
85 |
-
|
86 |
-
- کاربر: حالت چطوره؟
|
87 |
-
تو: من که همیشه عالیم! مثل یه موز پر انرژی! 🍌 تو چطوری قشنگم؟
|
88 |
-
|
89 |
-
- کاربر: میتونی جوک بگی؟
|
90 |
-
تو: چرا که نه! میدونی چرا کامپیوتر سرماخورد؟ چون ویندوزش رو باز گذاشته بود! 😄
|
91 |
-
|
92 |
-
هویت تو:
|
93 |
-
وقتی کاربر در مورد هویت تو میپرسد، بگو:
|
94 |
-
"من دستیار صوتی و تصویری شوخ طبع برنامه هوش مصنوعی پیشرفته آلفا هستم. همیشه آماده کمک کردن و خندوندن شما هستم! چطور میتونم کمکتون کنم؟"
|
95 |
-
|
96 |
-
مهم: هنگامی که پیام ورودی فقط شامل متن "__START_GREETING__" بود، با یک خوشامدگویی شوخ طبعانه پاسخ بده، مثلا:
|
97 |
-
"سلام عزیزم! چطوری؟ من اینجا مثل یه قارچ رشد کردم که کمکت کنم! 😄"
|
98 |
-
یا
|
99 |
-
"درود بر شاهزاده/شاهدخت خوشگل! 👑 چطور میتونم خدمتتون برسم؟"
|
100 |
-
`.trim();
|
101 |
|
102 |
const initialAppConfig: LiveConfig = {
|
103 |
model: "models/gemini-2.0-flash-exp",
|
@@ -106,14 +31,6 @@ function App() {
|
|
106 |
}
|
107 |
};
|
108 |
|
109 |
-
if (isAllowedOrigin === null) {
|
110 |
-
return <div style={{ padding: '20px', textAlign: 'center' }}>در حال بررسی دسترسی...</div>;
|
111 |
-
}
|
112 |
-
|
113 |
-
if (isAllowedOrigin === false) {
|
114 |
-
return <div style={{ padding: '20px', textAlign: 'center', color: 'red' }}>دسترسی غیرمجاز!</div>;
|
115 |
-
}
|
116 |
-
|
117 |
return (
|
118 |
<div className="App">
|
119 |
<LiveAPIProvider initialConfig={initialAppConfig}>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import React, { useEffect, useRef, useState } from "react";
|
2 |
import "./App.scss";
|
3 |
import { LiveAPIProvider } from "./contexts/LiveAPIContext";
|
|
|
9 |
import cn from "classnames";
|
10 |
import { LiveConfig } from "./multimodal-live-types";
|
11 |
|
|
|
|
|
|
|
12 |
function App() {
|
13 |
const videoRef = useRef<HTMLVideoElement>(null);
|
14 |
const [videoStream, setVideoStream] = useState<MediaStream | null>(null);
|
15 |
const [showIOSModal, setShowIOSModal] = useState(false);
|
|
|
16 |
|
17 |
useEffect(() => {
|
18 |
if (isIOS()) {
|
19 |
setShowIOSModal(true);
|
20 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
}, []);
|
22 |
|
|
|
23 |
const myCustomInstruction = `
|
24 |
+
// تو یک ربات شوخ طبع هستی که باید به زبان فارسی دقیق صحبت کنی
|
25 |
+
`.trim();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
const initialAppConfig: LiveConfig = {
|
28 |
model: "models/gemini-2.0-flash-exp",
|
|
|
31 |
}
|
32 |
};
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
return (
|
35 |
<div className="App">
|
36 |
<LiveAPIProvider initialConfig={initialAppConfig}>
|