简介
AIScript 是一种独特的解释型编程语言和 Web 框架的结合体,两者都用 Rust 编写,旨在帮助开发者轻松构建 AI 应用程序。该语言语法汲取了 Python、JavaScript 和 Rust 的灵感,结合它们的优势创造出直观、强大且易于使用的语言。
`AIScript` 仍处于早期开发阶段。请暂时不要在生产环境中使用。
编程语言
作为一种编程语言,AIScript 从零开始构建了自定义解释器:
- 函数是一等公民,支持面向对象编程范式
- 内置 AI 原语,包括提示词(prompt)、AI 函数和代理(agent)功能
- 动态类型系统,结合有针对性的静态类型检查以提高安全性
- 内置类似于 Python Pydantic 的数据验证
- 简单而强大的错误处理机制,受 Rust、Go 和 Zig 启发
- 丰富的标准库,底层利用 Rust 的生态系统
- 自动垃圾回收进行内存管理
Web 框架
AIScript 不仅仅是一种语言,它是一个完整的 Web 开发解决方案:
- 优雅直观的路由 DSL,用于定义端点
- 自动参数验证,提供清晰的错误消息
- 自动生成 OpenAPI 架构和文档
- 基于 Rust 最佳实践,底层使用 axum 和 sqlx
- 结合了 Rust 的 axum 性能和类似 Python Flask 的简单性
- 内置数据库模块(
std.db.pg
和std.db.redis
) - 内置身份验证和社交登录功能
- 通过简单配置轻松启用电池内置(battery-included)功能
AIScript 如何工作
$ export OPENAI_API_KEY=<your-openai-api-key>
$ cat web.ai
get / {
"""一个用于询问 LLM 的 API"""
query {
"""要提问的问题"""
@string(min_len=3, max_len=100) // 使用内置指令 @string 验证参数
question: str
}
// `ai` 和 `prompt` 是关键字
ai fn ask(question: str) -> str {
let answer = prompt question;
return answer;
}
// 使用 query.name 或 query["name"] 访问查询参数
let answer = ask(query.question);
return { answer };
}
$ aiscript serve web.ai
Listening on http://localhost:8080
$ curl http://localhost:8080
{
"error": "Missing required field: question"
}
$ curl http://localhost:8080?question=Hi
{
"error": "Field validation failed: question: String length is less than the minimum length of 3"
}
$ curl http://localhost:8080?question=What is the capital of France?
{
"answer": "The capital of France is Paris."
}
您可以打开 http://localhost:8080/redoc 查看自动生成的 API 文档。
使用场景
AIScript 在以下场景中表现出色:
- AI 驱动的 API:当您需要构建利用 LLM 和其他 AI 服务的 API 时
- 原型设计:无需配置开销,快速构建和测试想法
- 微服务:创建轻量级、专注的服务,最小化样板代码
- 数据验证:当请求/响应验证对您的应用程序至关重要时
- 内部工具:使用集成文档快速构建工具
理念
AIScript 秉承以下核心原则:
- 约定优于配置:开箱即用的合理默认设置
- 渐进式复杂性:易于上手,需要时又功能强大
- AI 原生设计:从头开始为 AI 时代而构建
- 开发者幸福感:首先关注开发者体验
- 不牺牲性能:无需在速度和生产力之间做选择
官网:https://aiscript.dev/ GitHub: https://github.com/aiscriptdev/aiscript
Ext Link: https://aiscript.dev/
1
共 1 条评论, 1 页
评论区
写评论这个想法挺好的. 看起来不错, 后续试试呢