SmythOS是一个为AI代理设计的操作系统,能简化智能AI代理的构建、部署和规模化管理。SmythOS提供一个统一的资源抽象层,使得无论是本地存储、S3、OpenAI、Pinecone还是Redis等各种基础设施,都能通过一致的接口进行访问,能确保业务逻辑在不同环境和提供商之间无缝切换,实现高度灵活性和可扩展性。
SmythOS内置了企业级的安全机制,如Candidate/ACL系统和安全的凭证管理,保证资源访问的授权与数据隔离。SmythOS架构由SRE(Smyth Runtime Environment)作为核心运行时环境,负责资源管理、代理编排并集成了40多个生产就绪的组件,SDK提供了简洁、类型安全的API,便于开发者从开发到生产阶段保持代码一致性,CLI加速了项目的创建和管理。
SmythOS支持通过代码或.smyth文件(代理工作流的符号表示)构建代理,提供流式和聊天模式等核心交互方式,具备高吞吐量、模块化、可观测性、云原生和从开发到企业级生产环境的全面可伸缩性,目标是构建一个开放且可访问的智能代理互联网。
SmythOS是完整的智能体AI操作系统,就像传统操作系统管理资源并为应用程序提供API一样,SmythOS管理AI资源,提供从开发到生产都能使用的统一SDK。
SmythOS为所有资源提供统一接口,确保整个AI平台的一致性和简洁性,无论将文件存储在本地、S3还是其他存储提供商,都无需担心底层实现细节,SmythOS提供强大的抽象层,所有提供商都暴露相同的函数和API。
这一原则适用于所有服务,不仅限于存储,无论使用VectorDB、缓存(Redis、RAM)、大语言模型(OpenAI、Anthropic)或其他资源,不同提供商的接口保持一致。
这种方式让AI平台易于扩展且极具灵活性,可以无缝切换不同提供商,测试性能、优化成本或满足特定需求,无需修改任何业务逻辑。
SmythOS以智能体为中心设计,专门为AI智能体工作负载打造,对开发者友好,提供简单的SDK,能从开发阶段扩展到生产阶段,拥有模块化架构,提供可扩展的连接器系统,适用于任何基础设施,适合生产环境,可扩展、可观测且经过实践检验,内置访问控制和安全的凭证管理。
全局安装CLI并创建新项目:
npm i -g @smythos/cli
sre create
CLI会逐步引导创建SDK项目,并配置适合需求的设置。
将SDK直接添加到现有项目:
npm install @smythos/sdk
可以查看示例、文档和代码模板开始使用。
注意:如果遇到CLI或代码问题,设置环境变量LOG_LEVEL="debug",重新运行代码。然后分享日志,这有助于诊断问题。
packages/core
SRE是驱动SmythOS的核心运行时环境,可以看作是AI智能体操作系统的内核。
• 模块化架构:每个服务(存储、大语言模型、VectorDB、缓存等)的可插拔连接器
• 安全优先:内置Candidate/ACL系统,用于安全的资源访问
• 资源管理:智能内存、存储和计算管理
• 智能体编排:完整的智能体生命周期管理
• 40多个组件:适用于AI、数据处理和集成的生产级组件
• 存储:本地、S3、谷歌云、Azure
• 大语言模型:OpenAI、Anthropic、谷歌AI、AWS Bedrock、Groq、Perplexity
• VectorDB:Pinecone、Milvus、RAMVec
• 缓存:RAM、Redis
• 密钥库:JSON文件、AWS Secrets Manager、HashiCorp
packages/sdk
SDK在SRE运行时之上提供简洁、对开发者友好的抽象层。设计注重简洁性,同时不牺牲功能。
• 简单的API:清晰、直观的界面,易于学习
• 类型安全:完整的TypeScript支持,带有智能提示
• 适合生产环境:相同代码在开发和生产环境都能运行
• 配置独立:业务逻辑不会因基础设施扩展而改变
packages/cli
SRE CLI通过脚手架和项目管理功能,帮助快速开始使用。
SDK可以通过代码构建智能体,或加载并运行.smyth文件(.smyth是使用SmythOS构建器创建的智能体的扩展名)。
async function main() {
const agentPath = path.resolve(__dirname, 'my-agent.smyth');
// 导入智能体工作流
const agent = Agent.import(agentPath, {
model: Model.OpenAI('gpt-4o'),
});
// 向智能体提问并获取完整响应
const result = await agent.prompt('你好,最近怎么样?');
console.log(result);
}
想要流式模式?很简单:
const events = await agent.prompt('你好,最近怎么样?').stream();
events.on('content', (text) => {
console.log('content');
});
events.on('end', /*... 处理结束 ... */)
events.on('usage', /*... 收集智能体使用数据 ... */)
events.on('toolCall', /*... ... */)
events.on('toolResult', /*... ... */)
...
想要聊天模式?很简单:
const chat = agent.chat();
// 从这里开始,可以使用prompt或prompt.stream来处理
let result = await chat.prompt("你好,我是Smyth")
console.log(result);
result = await chat.prompt('还记得我的名字吗?');
console.log(result);
// agent.prompt()和chat.prompt()的区别在于,后者会记住对话内容
这个示例展示如何借助SDK元素编写智能体逻辑:
import { Agent, Model } from '@smythos/sdk';
async function main() {
// 创建智能体
const agent = new Agent({
name: '文章写手',
model: 'gpt-4o',
behavior: '你是文案助手。用户会提供一个主题,你需要撰写相关文章并存储。',
});
// 添加自定义技能,结合多种AI能力
agent.addSkill({
id: 'AgentWriter_001',
name: 'WriteAndStoreArticle',
description: '围绕给定主题撰写文章并存储',
process: async ({ topic }) => {
// VectorDB - 搜索相关上下文
const vec = agent.vectordb.Pinecone({
namespace: 'myNameSpace',
indexName: 'demo-vec',
pineconeApiKey: process.env.PINECONE_API_KEY,
embeddings: Model.OpenAI('text-embedding-3-large'),
});
const searchResult = await vec.search(topic, {
topK: 10,
includeMetadata: true,
});
const context = searchResult.map((e) => e?.metadata?.text).join('\n');
// LLM - 生成文章
const llm = agent.llm.OpenAI('gpt-4o-mini');
const result = await llm.prompt(`使用以下上下文撰写关于${topic}的文章:${context}`);
// 存储 - 保存文章
const storage = agent.storage.S3({
/*... S3配置 ...*/
});
const uri = await storage.write('article.txt', result);
return `文章已生成并存储。内部URI:${uri}`;
},
});
// 使用智能体
const result = await agent.prompt('写一篇关于樱花树的文章');
console.log(result);
}
main().catch(console.error);
安全是SRE的核心原则。每个操作都需要通过Candidate/ACL系统的适当授权,确保智能体只能访问被允许的资源。
const candidate = AccessCandidate.agent(agentId);
const storage = ConnectorService.getStorageConnector().user(candidate);
await storage.write('data.json', content);
业务逻辑保持不变,基础设施可以扩展:使用SDK时,SmythOS运行时环境会隐式初始化通用连接器,涵盖标准智能体用例。
// 无需显式初始化SRE
// 以下展示内部初始化方式
// const sre = SRE.init({
// Cache: { Connector: 'RAM' },
// Storage: { Connector: 'Local' },
// Log: { Connector: 'ConsoleLog' },
// });
async function main() {
// 智能体逻辑写在这里
}
main();
但也可以显式初始化SRE,使用其他内置连接器或自定义连接器。使用场景包括:
• 想要使用自定义智能体存储
• 想要将API密钥和其他凭证存储在更安全的密钥库中
• 需要企业级安全和数据隔离
const sre = SRE.init({
Account: { Connector: 'EnterpriseAccountConnector', Settings: { ... } },
Vault: { Connector: 'Hashicorp', Settings: { url: 'https://vault.company.com' } },
Cache: { Connector: 'Redis', Settings: { url: 'redis://prod-cluster' } },
Storage: { Connector: 'S3', Settings: { bucket: 'company-ai-agents' } },
VectorDB: { Connector: 'Pinecone', Settings: { indexName: 'company-ai-agents' } },
Log: { Connector: 'CustomLogStore'},
});
async function main() {
// 智能体逻辑写在这里
}
main();
40多个生产级组件,适用于各种AI用例。这些组件可以通过编程方式调用,或通过智能体工作流的符号表示(.smyth文件)调用。
• AI/LLM:GenAILLM
、ImageGen
、LLMAssistant
• 外部:APICall
、WebSearch
、WebScrape
、HuggingFace
• 数据:DataSourceIndexer
、DataSourceLookup
、JSONFilter
• 逻辑:LogicAND
、LogicOR
、Classifier
、ForEach
• 存储:LocalStorage
、S3
• 代码:ECMAScript
、ServerlessCode