2个不稳定版本
0.3.0 | 2023年8月31日 |
---|---|
0.2.0 | 2023年5月8日 |
#36 在 #有状态
每月 23次下载
用于 yomo
5KB
60 行
YoMo
YoMo是一个开源的LLM函数调用框架,用于构建地理分布式的AI应用程序。基于QUIC传输协议和有状态无服务器架构构建,使您的AI应用具有低延迟、可靠、安全且易于使用。
💚 我们关注: 人工智能时代的客户体验
🌶 特性
特性 | |
---|---|
⚡️ | 低延迟 通过实现基于QUIC QUIC 保证 |
🔐 | 安全 每个数据包都设计为使用TLS v1.3 |
📸 | 有状态无服务器 使您的GPU无服务器运行速度提高10倍 |
🌎 | 地理分布式架构 将AI推理更靠近终端用户 |
🚀 | Y3 一种 比实时更快的编解码器 |
🚀 入门
让我们使用 sfn-currency-converter
实现一个函数调用
步骤 1. 安装 CLI
curl -fsSL https://get.yomo.run | sh
验证 CLI 是否安装成功
yomo version
步骤 2. 启动服务器
准备配置文件 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
步骤 3. 编写函数
首先,让我们定义这个函数的功能以及所需参数,这些将在调用 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{}
}
创建一个有状态的 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 -X POST -H "Content-Type: application/json" -d '{"prompt":"compare nike and puma website speed"}' http://127.0.0.1:8000/invoke
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"
}
完整示例代码
📚 文档
了解更多关于 YoMo 的信息,请访问 yomo.run/docs.
🎯 专注于地理分布式 AI 推理基础设施
今天,用户希望即时 AI 推理,当 AI 应用能够快速响应时,每个 AI 应用都更加强大。但是,目前当我们谈论 distribution
时,它代表的是 数据中心内的分布式。AI 模型离全球的用户都很远。
如果应用程序可以在接近最终用户的地方部署,解决这个问题,这就是 地理分布式系统架构
🦸 贡献
首先,感谢您考虑为 YoMo 做出贡献。像您这样的人使 YoMo 更好。您可以通过许多方式参与项目,例如
- 提交一个 错误报告。请确保包括您使用的 YoMo 版本、操作系统信息以及重现错误的步骤。
- 建议一个新功能。
- 阅读我们的 贡献指南 了解我们正在寻找哪些类型的贡献。
- 我们还采用了 行为准则,我们希望项目参与者遵守。
许可
lib.rs
:
YoMo Rust开发SDK(宏)
此包旨在让开发者使用 Rust 语言实现自己的 YoMo 应用程序。
依赖项
~1.5MB
~35K SLoC