yomo地理的に分散された AI アプリケーションを構築するためのオープンソースの LLM 関数呼び出しフレームワークです。 QUIC トランスポート プロトコルとステートフル サーバーレス アーキテクチャ上に構築されているため、AI アプリケーションの遅延が低く、信頼性が高く、安全で、簡単になります。
私たちが重視しているのは、 AI 時代のカスタマー エクスペリエンスです。
特徴 | |
---|---|
⚡️ | QUIC QUIC 上に実装することで低遅延を保証 |
? | 設計によりすべてのデータパケットにセキュリティTLS v1.3 を適用 |
? | ステートフル サーバーレス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 {}
}
ステートフル サーバーレス関数を作成して、ドメインの 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、私たちのドキュメント Web サイトは次のとおりです。
今日のユーザーが即時 AI 推論を望んでいることは周知の事実であり、すべての AI アプリケーションは、迅速に応答することでより強力になります。ただし、現在、 distribution
というと、データセンター内の分散を指します。 AI モデルは世界中のユーザーから遠く離れたところにあります。
エンド ユーザーに近い場所にアプリケーションをデプロイできる場合、問題は解決します。これが地理分散システム アーキテクチャです。
yomo 地理分散システム" src="/uploads/20250101/img_67746bb95618230.png" style="max-width: 100%;">
まず、寄付を検討していただきありがとうございます。あなたのような人がいるからこそ、 yomo良くなるのです。プロジェクトに参加するには、次のようなさまざまな方法があります。
Apache ライセンス 2.0