yomo เป็นโอเพ่นซอร์ส LLM Function Calling Framework สำหรับการสร้างแอปพลิเคชัน AI ที่กระจายตามภูมิศาสตร์ สร้างขึ้นบน QUIC Transport Protocol และสถาปัตยกรรม Stateful Serverless ทำให้แอปพลิเคชัน AI ของคุณมีความหน่วงต่ำ เชื่อถือได้ ปลอดภัย และใช้งานง่าย
เราใส่ใจเกี่ยวกับ: ประสบการณ์ของลูกค้าในยุคของ AI
คุณสมบัติ | |
---|---|
รับประกัน ความหน่วงต่ำ โดยการใช้งานบน QUIC QUIC | |
- | ความปลอดภัย TLS v1.3 บนทุกแพ็กเก็ตข้อมูลตามการออกแบบ |
- | Stateful Serverless ทำให้ GPU ของคุณไร้เซิร์ฟเวอร์เร็วขึ้น 10 เท่า |
- | สถาปัตยกรรมแบบกระจายทางภูมิศาสตร์ ทำให้การอนุมาน AI ใกล้ชิดกับผู้ใช้ปลายทางมากขึ้น |
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 {}
}
สร้างฟังก์ชัน Stateful Serverless เพื่อรับ 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 เว็บไซต์เอกสารของเราคือ
ไม่ใช่ความลับที่ผู้ใช้ในปัจจุบันต้องการการอนุมาน AI ทันที แอปพลิเคชัน AI ทุกตัวจะมีประสิทธิภาพมากขึ้นเมื่อตอบสนองอย่างรวดเร็ว แต่ในปัจจุบัน เมื่อเราพูดถึง distribution
มันหมายถึง การกระจายสินค้าในศูนย์ข้อมูล โมเดล AI อยู่ห่างไกลจากผู้ใช้จากทั่วทุกมุมโลก
หากแอปพลิเคชันสามารถติดตั้งได้ทุกที่ใกล้กับผู้ใช้ปลายทาง ให้แก้ไขปัญหา นี่คือ สถาปัตยกรรมระบบแบบกระจายทางภูมิศาสตร์ :
ระบบกระจายทางภูมิศาสตร์ของ yomo" src="/uploads/20250101/img_67746bb95618230.png" style="max-width: 100%;">
ก่อนอื่นขอขอบคุณสำหรับการพิจารณาการมีส่วนร่วม คนอย่างคุณนั่นแหละที่ทำให้ yomo ดีขึ้น คุณสามารถเข้าร่วมโครงการได้หลายวิธี เช่น
ใบอนุญาต Apache 2.0