使用 LLM 构建小型应用
目标
中文
我们将尝试构建的应用程序旨在为电子商务商店提供后端支持。它支持对核心实体(如类别、产品、用户和评论)进行 CRUD(创建、读取、更新、删除)操作。
一些关键方面:
- /类别/: /categories 端点允许创建、读取、更新和删除产品类别。类别具有名称、描述和 ID。
- 产品: /products 端点允许创建、读取、更新和删除产品。产品属于某个类别,并具有名称、描述、价格和 ID 等属性。/products/{category_id}/products 端点支持获取或创建特定类别的产品。
- 用户: /users 端点支持对用户账户进行 CRUD 操作。用户具有名称、电子邮件、密码、头像以及诸如 is_admin 之类的角色标志等属性。
- 评论: /reviews 端点允许对评论进行 CRUD 操作,评论是用户针对产品发布的评分和留言。评论具有评分、评论内容、product_id 和 user_id 等属性。/reviews/products/{product_id} 和 /reviews/users/{user_id} 端点允许按产品或用户筛选评论。
- CRUD 约定: 该 API 遵循典型的 REST 约定——使用 GET 获取资源,POST 创建资源,PUT/PATCH 更新资源,DELETE 删除资源。
- 错误处理: API 错误以符合 HTTPValidationError 模式的 JSON 对象形式返回。
- 分页: 像 /categories 和 /products 这样的列表端点通过 skip 和 limit 查询参数支持分页。
总之,它使典型的电子商务应用程序前端能够执行诸如管理产品目录、用户账户和订单历史、产品评论和评分等操作。后端根据 REST 原则公开结构化的 CRUD API,供应用前端调用。
Français
Voici la traduction française :
L'objectif de cette API semble être de fournir un backend pour une application de commerce électronique. Elle permet des opérations CRUD (créer, lire, mettre à jour, supprimer) sur des entités de base comme les catégories, les produits, les utilisateurs et les avis.
Quelques aspects clés :
- Catégories : Les points de terminaison /categories permettent de créer, lire, mettre à jour et supprimer des catégories de produits. Les catégories ont un nom, une description et un identifiant.
- Produits : Les points de terminaison /products permettent de créer, lire, mettre à jour et supprimer des produits. Les produits appartiennent à une catégorie et ont des propriétés comme le nom, la description, le prix et l'identifiant. Le point de terminaison /products/{category_id}/products permet de récupérer ou créer des produits pour une catégorie spécifique.
- Utilisateurs : Les points de terminaison /users permettent des opérations CRUD sur les comptes utilisateurs. Les utilisateurs ont des propriétés comme le nom, l'email, le mot de passe, l'avatar, et des indicateurs de rôle comme is_admin.
- Avis : Les points de terminaison /reviews permettent les opérations CRUD sur les avis, qui sont des notes et commentaires publiés sur un produit par un utilisateur. Les avis ont des propriétés comme la note, le commentaire, le product_id et le user_id. Les points de terminaison /reviews/products/{product_id} et /reviews/users/{user_id} permettent de filtrer les avis par produit ou par utilisateur.
- Conventions CRUD : L'API suit les conventions REST typiques - GET pour récupérer des ressources, POST pour créer, PUT/PATCH pour mettre à jour, et DELETE pour supprimer.
- Gestion des erreurs : Les erreurs d'API sont renvoyées en tant qu'objets JSON adhérant au schéma HTTPValidationError.
- Pagination : Les points de terminaison de liste comme /categories et /products prennent en charge la pagination via les paramètres de requête skip et limit.
En résumé, elle permet à un frontend d'application de commerce électronique typique d'effectuer des opérations comme la gestion de produits dans un catalogue, les comptes utilisateurs et l'historique des commandes, les avis et notes sur les produits, et plus encore. Le backend expose des API CRUD structurées suivant les principes REST pour que l'frontend de l'application les consomme.
API Structure
[… (Mermaid and YAML code preserved as requested) …]
设置
Python
中文
Français
Python est un langage de programmation interprété de haut niveau qui vous permet de travailler rapidement et d'intégrer vos systèmes de manière plus efficace. Il est connu pour sa syntaxe facile qui met l'accent sur la lisibilité et réduit donc le coût de la maintenance du programme. Python prend en charge plusieurs paradigmes de programmation, y compris la programmation procédurale, orientée objet et fonctionnelle.
Poetry, dans un contexte logiciel, est un outil de gestion des dépendances et de paquetage en Python. Il vous permet de déclarer les bibliothèques dont dépend votre projet et il les gérera (installera/mettra à jour) pour vous.
Ensemble, utiliser Python avec Poetry signifie développer un logiciel basé sur Python dont les dépendances sont gérées par Poetry.
[… (Code blocks preserved) …]
技术
OpenAPI
中文
OpenAPI 规范 (OAS)(前身为 Swagger)是一种用于描述、生产、消费和可视化 RESTful Web 服务的机器可读接口文件规范。它有助于为 REST API 定义标准且与语言无关的接口,使人类和计算机无需直接访问源代码、文档或网络流量即可理解服务功能。
让我们从 JSON Schema 开始。JSON Schema 是验证 JSON 数据结构的强大工具。它以清晰、简洁且易于阅读(对人类和机器而言)的方式描述您现有的数据格式。它也是与语言无关的,这意味着您可以在任何支持 JSON 的编程语言中使用它。
那么,OpenAPI 规范在其中扮演什么角色呢?JSON Schema 是 OpenAPI 规范的一部分(OpenAPI 是其扩展),用于描述和验证 REST API。
通过使用 OAS 创建 API,开发人员无需访问 API 源代码或阅读大量文档,即可理解、使用并可视化 API。设计良好的 OAS 有助于简化 API 开发。
TM Forum 的 OpenAPIs(TMF 规范的一部分) 是 OpenAPI 规范实际应用的一个例子。它们是一套 API,提供从管理客户和产品到处理订单和计费等多种功能,并根据全球公认的标准开发。
就其在现代软件开发中的实用性而言,它们在以下方面非常有用:
- 文档:能够自动生成包含交互功能的文档,减少了工作量,对消费者和测试非常有益。
- 代码生成:OAS 支持以不同语言生成客户端、服务器和测试用例,极大地加快了开发过程。
- API 设计与规划:它们允许采用“设计优先”的方法,您可以先规划 API,然后再执行。
总而言之,OpenAPI 规范及其基础设施中的 JSON Schema,通过使 API 开发更快、更简单、更可靠,正在促进软件构建方式的范式转移。
Français
Spécification OpenAPI (OAS), autrefois connue sous le nom de Swagger, est une spécification pour les fichiers d'interface lisibles par machine pour décrire, produire, consommer et visualiser des services web RESTful. Elle aide à définir une interface standard, indépendante du langage, pour les API REST, ce qui permet aux humains et aux ordinateurs de comprendre les capacités du service sans un accès direct au code source, à la documentation, ou au trafic réseau.
Commençons avec les schémas JSON. Un schéma JSON est un outil puissant pour valider la structure des données JSON. Il décrit votre format de données existant de manière claire, concise et facile à lire (pour les humains et les machines). Il est également indépendant du langage, ce qui signifie que vous pouvez l'utiliser avec n'importe quel langage de programmation qui supporte JSON.
Alors, comment les spécifications OpenAPI s'intègrent-elles dans le tableau ? Les schémas JSON forment une partie des spécifications OpenAPI, qui en sont une extension, et servent à décrire et à valider les API REST.
En créant des API avec OAS, les développeurs peuvent comprendre et utiliser l'API, et former une visualisation de l'API, sans avoir accès au code source de l'API ou la nécessité de lire une documentation extensive. Une OAS bien conçue aide à simplifier le développement des API.
Les OpenAPI du TM Forum (partie des spécifications TMF) sont un exemple d'utilisation réelle des spécifications OpenAPI. Il s'agit d'un ensemble d'API qui fournissent une variété de fonctions, de la gestion des clients et des produits à la manipulation des commandes et de la facturation, et qui sont développées selon des normes mondialement reconnues.
En termes d'utilité dans le développement de logiciels modernes, ils sont extrêmement utiles pour :
- Documentation: La capacité à générer automatiquement de la documentation, avec interactivité incluse, réduit le travail et est bénéfique pour les consommateurs et les tests.
- Génération de code: L'OAS soutient la génération de clients, de serveurs et de cas test dans différentes langues, ce qui accélère considérablement le processus de développement.
- Conception et planification d'API: Ils permettent une approche de conception en premier, où vous pouvez planifier votre API pour ensuite l'exécuter.
En somme, les spécifications OpenAPI, avec les schémas JSON dans leur infrastructure, facilitent un changement de paradigme dans la façon dont nous construisons des logiciels en rendant le développement d'API plus rapide, plus facile et plus fiable.
FastAPI with Python
中文
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于使用 Python 3.6+ 构建 API,基于标准的 Python 类型提示和异步编程能力。其主要特点是快速、简单、符合 Python 习惯、注重性能且健壮,并具有自动交互式 API 文档等功能。
FastAPI 基于 Starlette(用于 Web 部分)和 Pydantic(用于数据部分)。它旨在实现极高的速度和易用性,并对类型检查、IDE 集成以及其他现代编程特性提供出色的支持。由于它构建在标准 Python 类型提示之上,它能生成完全交互式的 API,这些提示也有助于数据验证、序列化和文档编写。
FastAPI 利用 Pydantic 模型和 Python 类型提示来生成 OpenAPI 规范。OpenAPI 规范是 REST API 的标准化格式,提供了一种描述 API 结构的方法,有助于生成正确的请求和响应。
以下是一个基础 FastAPI 项目的有趣代码示例,包括一个提供 POST、GET、PATCH、PUT 和 DELETE 端点的 API,以及基于 Python Requests 库的客户端代码:
Français
FastAPI est un framework web moderne, rapide (à haute performance), destiné à la création d'APIs avec Python 3.6+ basé sur les indications de type Python standard et les capacités de programmation asynchrone. Les caractéristiques clés sont la rapidité, la facilité, le côté Pythonic, l'accent sur les performances, et la robustesse, avec des fonctionnalités comme la documentation automatique interactive de l'API.
FastAPI est construit sur Starlette pour les parties web et Pydantic pour les parties de données. Il est conçu pour être très rapide et facile à utiliser, avec un excellent support pour le contrôle de type, l'intégration IDE, et d'autres avantages de la programmation moderne. Il produit une API entièrement interactive grâce à son utilisation des indications de type Python standard, qui aident également à la validation des données, à la sérialisation et à la documentation.
FastAPI utilise les modèles Pydantic et les indications de type Python pour générer des spécifications OpenAPI. Les spécifications OpenAPI sont le format standardisé pour les API REST qui offrent un moyen de décrire la structure de l'API, ce qui aide à générer des requêtes et des réponses correctes.
Voici un exemple de code intéressant d'un projet FastAPI de base, comprenant une API qui sert des points de terminaison POST, GET, PATCH, PUT, et DELETE ainsi qu'un code client basé sur la bibliothèque Python Requests:
OpenAI Chat Plugins
中文
OpenAI 插件在 ChatGPT 和第三方应用程序之间建立了连接。通过这些插件,ChatGPT 获得了与开发人员创建的 API 进行交互的能力,从而扩展了其功能并能够执行各种任务。借助这些插件,ChatGPT 可以完成多种操作,例如:
- 获取实时数据,如体育比分、股票价格和最新新闻。
- 访问知识库信息,如公司文档和个人笔记。
- 协助用户执行操作,如预订航班和订餐。
Français
Les plugins OpenAI connectent ChatGPT à des applications tierces. Ces plugins permettent à ChatGPT d'interagir avec des API définies par des développeurs, améliorant ainsi ses capacités et lui permettant d'effectuer une large gamme d'actions. Les plugins permettent à ChatGPT de réaliser des choses telles que :
- Récupérer des informations en temps réel ; par exemple, les scores sportifs, les prix des actions, les dernières actualités, etc.
- Obtenir des informations à partir de bases de connaissances ; par exemple, des documents d'entreprise, des notes personnelles, etc.
- Aider les utilisateurs à effectuer des actions ; par exemple, réserver un vol, commander de la nourriture, etc.

