yomo عبارة عن إطار عمل مفتوح المصدر لاستدعاء وظائف LLM لبناء تطبيقات الذكاء الاصطناعي الموزعة جغرافيًا. تم تصميمه على بروتوكول نقل QUIC وبنية Stateful Serverless، مما يجعل تطبيق الذكاء الاصطناعي الخاص بك منخفض زمن الوصول وموثوقًا وآمنًا وسهلاً.
نحن نهتم بما يلي: تجربة العملاء في عصر الذكاء الاصطناعي
سمات | |
---|---|
⚡️ | زمن الوصول المنخفض مضمون من خلال التنفيذ على قمة QUIC QUIC |
؟ | الأمان TLS v1.3 على كل حزمة بيانات حسب التصميم |
؟ | حالة بدون خادم اجعل وحدة معالجة الرسومات الخاصة بك بدون خادم أسرع 10 مرات |
؟ | الهندسة المعمارية الموزعة جغرافيًا تجعل استنتاج الذكاء الاصطناعي أقرب إلى المستخدمين النهائيين |
Y3 أسرع من برنامج الترميز في الوقت الحقيقي |
لننفذ استدعاء دالة باستخدام sfn-currency-converter
:
curl -fsSL https://get.yomo.run | sh
تحقق من تثبيت واجهة سطر الأوامر (CLI) بنجاح
yomo version
قم بإعداد التكوين كـ my-agent.yaml
name : ai-zipper
host : 0.0.0.0
port : 9000
auth :
type : token
token : SECRET_TOKEN
bridge :
ai :
server :
addr : 0.0.0.0:8000 # # Restful API endpoint
provider : openai # # LLM API Service we will use
providers :
azopenai :
api_endpoint : https://<RESOURCE>.openai.azure.com
deployment_id : <DEPLOYMENT_ID>
api_key : <API_KEY>
api_version : <API_VERSION>
openai :
api_key : sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx
model : gpt-4-1106-preview
gemini :
api_key : <GEMINI_API_KEY>
cloudflare_azure :
endpoint : https://gateway.ai.cloudflare.com/v1/<CF_GATEWAY_ID>/<CF_GATEWAY_NAME>
api_key : <AZURE_API_KEY>
resource : <AZURE_OPENAI_RESOURCE>
deployment_id : <AZURE_OPENAI_DEPLOYMENT_ID>
api_version : 2023-12-01-preview
بدء الخادم:
yomo _LOG_LEVEL=debug yomo serve -c my-agent.yaml
أولاً، دعونا نحدد ما تفعله هذه الوظيفة وكيف هي المعلمات المطلوبة، وسيتم دمجها للمطالبة عند استدعاء LLM.
type Parameter struct {
Domain string `json:"domain" jsonschema:"description=Domain of the website,example=example.com"`
}
func Description () string {
return `if user asks ip or network latency of a domain, you should return the result of the giving domain. try your best to dissect user expressions to infer the right domain names`
}
func InputSchema () any {
return & Parameter {}
}
قم بإنشاء وظيفة بدون خادم ذات حالة للحصول على عنوان IP ووقت الاستجابة للمجال:
func Handler ( ctx serverless. Context ) {
var msg Parameter
ctx . ReadLLMArguments ( & msg )
// get ip of the domain
ips , _ := net . LookupIP ( msg . Domain )
// get ip[0] ping latency
pinger , _ := ping . NewPinger ( ips [ 0 ]. String ())
pinger . Count = 3
pinger . Run ()
stats := pinger . Statistics ()
val := fmt . Sprintf ( "domain %s has ip %s with average latency %s" , msg . Domain , ips [ 0 ], stats . AvgRtt )
ctx . WriteLLMResult ( val )
}
وأخيرا، دعونا تشغيله
$ yomo run app.go
time=2024-03-19T21:43:30.583+08:00 level=INFO msg= " connected to zipper " component=StreamFunction sfn_id=B0ttNSEKLSgMjXidB11K1 sfn_name=fn-get-ip-from-domain zipper_addr=localhost:9000
time=2024-03-19T21:43:30.584+08:00 level=INFO msg= " register ai function success " component=StreamFunction sfn_id=B0ttNSEKLSgMjXidB11K1 sfn_name=fn-get-ip-from-domain zipper_addr=localhost:9000 name=fn-get-ip-from-domain tag=16
$ curl -i http://127.0.0.1:9000/v1/chat/completions -H " Content-Type: application/json " -d ' {
"messages": [
{
"role": "system",
"content": "You are a test assistant."
},
{
"role": "user",
"content": "Compare website speed between Nike and Puma"
}
],
"stream": false
} '
HTTP/1.1 200 OK
Content-Length: 944
Connection: keep-alive
Content-Type: application/json
Date: Tue, 19 Mar 2024 13:30:14 GMT
Keep-Alive: timeout=4
Proxy-Connection: keep-alive
{
" Content " : " Based on the data provided for the domains nike.com and puma.com which include IP addresses and average latencies, we can infer the following about their website speeds:
- Nike.com has an IP address of 13.225.183.84 with an average latency of 65.568333 milliseconds.
- Puma.com has an IP address of 151.101.194.132 with an average latency of 54.563666 milliseconds.
Comparing these latencies, Puma.com is faster than Nike.com as it has a lower average latency.
Please be aware, however, that website speed can be influenced by many factors beyond latency, such as server processing time, content size, and delivery networks among others. To get a more comprehensive understanding of website speed, you would need to consider additional metrics and possibly conductreal-time speed tests. " ,
" FinishReason " : " stop "
}
رموز استدعاء وظيفة LLM الكاملة
اقرأ المزيد عن yomo على yomo .run/docs.
yomo ❤️ Vercel، موقع التوثيق الخاص بنا هو
ليس سرًا أن مستخدمي اليوم يريدون استنتاجًا فوريًا من الذكاء الاصطناعي، فكل تطبيق من تطبيقات الذكاء الاصطناعي يكون أكثر قوة عندما يستجيب بسرعة. لكن حاليا عندما نتحدث عن distribution
فهو يمثل التوزيع في مركز البيانات . نموذج الذكاء الاصطناعي بعيد عن مستخدميه من جميع أنحاء العالم.
إذا كان من الممكن نشر تطبيق ما في أي مكان بالقرب من المستخدمين النهائيين، فحل المشكلة، وهذه هي بنية النظام الموزعة جغرافيًا :
نظام يومو الموزع جغرافيًا" src="/uploads/20250101/img_67746bb95618230.png" style="max-width: 100%;">
أولاً، شكرًا لك على التفكير في تقديم المساهمات. إن الأشخاص مثلك هم الذين يجعلون yomo أفضل. هناك العديد من الطرق التي يمكنك من خلالها المشاركة في المشروع، على سبيل المثال:
ترخيص أباتشي 2.0