本周系统设计复习:

  • SSO 如何工作?
  • API 设计最佳实践
  • 领域驱动设计关键术语
  • 顶级 AI 代理框架
  • OpenAI 的 GPT-OSS 120B 和 20B 模型如何工作?

SSO 如何工作

单点登录(SSO)是一种认证方案。它允许用户使用单个 ID 登录到不同系统。

让我们 walkthrough 典型 SSO 登录流程

步骤 1:用户访问应用(如 Gmail)上的受保护资源,Gmail 是服务提供商(SP)。

步骤 2:Gmail 服务器检测到用户未登录,并将浏览器重定向到公司的身份提供商(IdP),带有认证请求。

步骤 3:浏览器将用户发送到 IdP。

步骤 4:IdP 显示登录页面,用户输入登录凭据。

步骤 5:IdP 创建安全令牌并返回给浏览器。IdP 还为未来访问创建会话。浏览器将令牌转发到 Gmail。

步骤 6:Gmail 验证令牌以确保它来自 IdP。

步骤 7:Gmail 基于用户允许访问的内容返回受保护资源到浏览器。

这完成基本 SSO 登录流程。让我们看看当用户导航到另一个 SSO 集成应用(如 Slack)时会发生什么。

步骤 8-9:用户访问 Slack,Slack 服务器检测到用户未登录。它将浏览器重定向到 IdP,带有新的认证请求。

步骤 10:浏览器将用户发送回 IdP。

步骤 11-13:由于用户已经用 IdP 登录,它跳过登录过程,而是为 Slack 创建新令牌。新令牌发送到浏览器,浏览器转发它到 Slack。

步骤 14-15:Slack 验证令牌并相应授予用户访问权限。

API 设计最佳实践

API 是互联网通信的骨干。设计良好的 API 表现一致、可预测且无摩擦增长。一些最佳实践包括:

1. 使用清晰命名

构建 API 时,选择直接和逻辑名称。保持一致并坚持直观 URL 表示集合。

2. 幂等性

API 应该是幂等的。它们通过使重复请求产生相同结果来确保安全重试,特别是对于 POST 操作。

3. 分页

API 应支持分页以防止性能瓶颈和负载膨胀。一些常见分页策略是基于偏移和基于游标。

4. 排序和过滤

查询字符串是允许排序和过滤 API 响应的有效方式。这使开发者容易看到应用哪些过滤器和排序顺序。

5. 跨资源引用

在连接资源之间使用清晰链接。避免使 API 更难理解的过长查询字符串。

6. 速率限制

速率限制用于控制在一定时间框架内用户可以向 API 发出的请求数量。这对维护 API 的可靠性和可用性至关重要。

7. 版本控制

修改 API 端点时,适当版本控制以支持向后兼容很重要。

8. 安全

API 安全对设计良好的 API 是强制性的。使用适当认证和授权与 API,使用 API Keys、JWT、OAuth2 和其他机制。

领域驱动设计关键术语

你听说过领域驱动设计(DDD)吗,一个主要软件设计方法?

DDD 在 Eric Evans 的经典书籍”Domain-Driven Design: Tackling Complexity in the Heart of Software”中介绍。它解释了一种方法为复杂业务建模。

领域对象的组成

  • 实体(Entity):有 ID 和生命周期的领域对象
  • 值对象(Value Object):没有 ID 的领域对象。它用于描述实体的属性
  • 聚合(Aggregate):由聚合根(也是实体)绑定在一起的实体集合。它是存储单元

领域对象的生命周期

  • 仓库(Repository):存储和加载聚合
  • 工厂(Factory):处理聚合的创建

领域对象的行为

  • 领域服务(Domain Service):编排多个聚合
  • 领域事件(Domain Event):描述聚合发生了什么。发布公开以便其他人可以消费和重建它

顶级 AI 代理框架

构建智能、独立 AI 系统使用代理框架更容易,这些框架结合大语言模型(LLM)与工具如 API、网络访问或代码执行。

1. LangChain

LangChain 使连接 LLM 与外部工具(如 API 和向量数据库)变得简单。它允许开发者创建链用于顺序任务执行和文档加载器用于上下文感知响应。

2. AutoGen

AutoGen 允许你开发可以相互聊天或让人类参与循环的 AI 代理。它像一个协作工作空间,代理可以运行代码、从工具拉取数据,或获取人类反馈以完成任务。

3. CrewAI

顾名思义,CrewAI 都关于团队合作。它编排具有角色(如作家和编辑)的 AI 代理团队,在结构化工作流中处理任务。它利用 LLM 和工具(API、互联网、代码等)有效管理复杂任务执行和数据流。

4. LlamaIndex

此框架从文档、API 和向量存储索引和查询数据以增强代理响应。它解析和加载数据,使 LLM 能够提供上下文感知答案,使其非常适合企业文档搜索系统和访问私有知识库的智能助手。

5. Semantic Kernel

Semantic Kernel 连接 AI 服务(OpenAI、Claude、Hugging Face 模型等)与基于插件的架构,支持技能、模板和 API 集成以实现灵活工作流。它支持文本搜索和自定义工作流用于应用。

OpenAI GPT-OSS 模型如何工作

OpenAI 最近发布两个 LLM,GPT-OSS-120B(1200 亿参数)和 GPT-OSS-20B(200 亿参数)。这些是完全开源模型,在 Apache 2.0 许可证下提供。

这些模型旨在以低成本提供强大现实世界性能。以下是它们如何工作:

1. 用户输入

用户提供一些输入,如问题或任务。例如,“用简单方式解释量子力学”。

2. 分词

原始文本使用字节对编码(BPE)转换为数字令牌。BPE 将文本分割为频繁出现的子词单元。由于它在字节级别操作,它可以处理任何输入,包括文本、代码、表情符号等。

3. 嵌入

每个令牌使用学习嵌入表映射到向量(数字列表)。这种向量化形式是模型理解和处理的。

4. Transformer 层

这是真正计算发生的地方。20B 模型有 24 个 Transformer 层,120B 模型有 36 个 Transformer 层。每层包括自注意力模块、路由器和专家(MoE)。

5. 自注意力模块

自注意力模块让模型理解整个输入中单词之间的关系。

6. 专家混合(MoE)架构

LLM 使用专家混合(MOE)架构。它不像传统模型那样使用所有模型权重,路由器从最多 64 个总专家池中选择最佳 2 个”专家”。每个专家是小型前馈网络,训练专用于某些类型输入。每个令牌只激活 2 个专家,从而节省计算同时提高质量。

7. 输出投影

通过所有层后,模型将内部表示投影回令牌概率,预测下一个单词或短语。

8. 微调

为使原始模型安全和有帮助,它经历监督微调和强化学习。

9. 响应生成

最后,模型基于预测令牌生成响应,基于上下文返回连贯输出给用户。

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP176: How Does SSO Work?

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。