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 .run/docs에서 yomo 에 대해 자세히 알아보세요.
yomo ❤️ Vercel, 당사의 문서 웹사이트는 다음과 같습니다.
오늘날의 사용자가 즉각적인 AI 추론을 원한다는 것은 비밀이 아닙니다. 모든 AI 애플리케이션은 빠르게 반응할 때 더욱 강력해집니다. 하지만 현재 distribution
이라고 하면 데이터센터 내에서의 유통을 의미합니다. AI 모델은 전 세계 사용자와 멀리 떨어져 있습니다.
애플리케이션을 최종 사용자와 가까운 곳에 배포할 수 있는 경우 문제를 해결하는 것이 지리적 분산 시스템 아키텍처 입니다.
yomo 지리적 분산 시스템" src="/uploads/20250101/img_67746bb95618230.png" style="max-width: 100%;">
먼저, 기여를 고려해 주셔서 감사합니다. 당신 같은 사람들이 yomo 더 좋게 만듭니다. 프로젝트에 참여할 수 있는 방법은 다양합니다. 예를 들면 다음과 같습니다.
아파치 라이선스 2.0