Clarifai AI API
  1. CLARIFAI API 基础知识
Clarifai AI API
  • CLARIFAI API 基础知识
    • Clarifai API 基础知识
    • gRPC 与 HTTP 通道
    • 支持的格式
  • API 接口
    • annotation_filters
      • {annotationFilterId}
        • Get a specific annotation filter.
      • List all the annotation filters.
      • Delete one or more annotation filters in a single request.
      • Add annotation filters.
      • Patch one or more annotation filters.
    • annotations
      • searches
        • metrics
          • {id}
            • Get the evaluation results between two search requests
          • List the evaluation results between two search requests
          • Evaluate the results of two search requests
        • Execute a search over annotations
        • Patch saved annotations searches by ids.
      • List all the annotation.
      • Delete multiple annotations in one request.
      • Post annotations.
      • Patch one or more annotations.
    • apps
      • List all the apps.
    • bulk_operations
      • {id}
        • Get the bulk operation details by ID
      • List all the bulk operations
      • delete one or more terminated bulk operations
      • Perform bulk operations on a list of inputs based on input source. Operation include add, update, delete of concepts, metadata and geo data. This is an Asynchronous process. Use ListBulkOperations or GetBulkOperation to check the status.
      • Cancel one or more bulk operations
    • collectors
      • {collectorId}
        • Get a specific collector from an app.
      • List all the collectors.
      • Delete multiple collectors in one request. This call is asynchronous. Use DeleteCollector if you want a synchronous version.
      • Add a list of Collectors to an app. In the handler of this endpoint we also check for all the scopes of the POST /inputs endpoint. Those current scopes are listed here as a hard requirement. They are needed when adding the collectors just so we now that
      • Patch one or more collectors.
    • concepts
      • knowledge_graphs
        • List all domain graphs.
        • Post domain graphs.
      • mappings
        • jobs
          • Start concept mapping jobs.
      • searches
        • Search over the concepts to find one or more you're looking for. This leverage the "body" parameter because we also have page and per_page as url query param variables in this request.
      • status
        • List all the concepts with their positive and negative counts
      • {conceptId}
        • languages
          • {language}
            • Get a specific concept from an app.
          • List the concept in all the translated languages.
          • Add a new translation for this concept.
          • Patch the name for a given language names by passing in a list of concepts with the new names for the languages.
        • Get a specific concept from an app.
      • List all the concepts.
      • Add a concept to an app.
      • Patch one or more concepts.
    • datasets
      • inputs
        • search_add
          • jobs
            • {jobId}
              • Get a specific job.
      • {datasetId}
        • inputs
          • {inputId}
            • Get a specific dataset input.
          • List all the dataset inputs in a dataset.
          • Delete one or more dataset inputs in a single request.
          • Add dataset inputs to a dataset. The process is not atomic, i.e. if there are errors with some dataset inputs, others might still be added. The response reports - SUCCESS if all dataset inputs were added, - MIXED_STATUS if only some dataset inputs wer
        • versions
          • {datasetVersionId}
            • exports
              • Create export of a dataset version.
            • metrics
              • V2_ListDatasetVersionMetricsGroups2
            • Get a specific dataset version.
          • List all the dataset versions.
          • Delete one or more dataset versions in a single request.
          • Add dataset versions to a dataset.
          • Patch one or more dataset versions.
        • Get a specific dataset.
      • List all the datasets.
      • Delete one or more datasets in a single request.
      • Add datasets to an app. The process is atomic, i.e. either all or no datasets are added. If there is an error for one dataset, the process will stop, revert the transaction and return the error.
      • Patch one or more datasets. The process is atomic, i.e. either all or no datasets are patched. If there is an error for one dataset, the process will stop, revert the transaction and return the error.
    • evaluations
      • {evaluationId}
        • V2_GetEvaluation2
      • V2_ListEvaluations3
      • V2_PostEvaluations2
    • inputs
      • annotations
        • Delete multiple annotations in one request.
      • data_sources
        • Initiates retrieval of inputs from cloud storage from a user provided data source. Will create and return an inputs-add-job for tracking progress. Archives will be extracted and their contents will be processed as inputs.
      • jobs
        • add
          • {id}
            • Get the input add job details by ID
            • cancel the input add job by ID
          • List all the inputs add jobs
        • extraction
          • {inputsExtractionJobId}
            • Get the input extraction job details by ID
          • List all the input extraction jobs
          • V2_CancelInputsExtractionJobs2
      • searches
        • Execute a search over inputs
        • Patch saved inputs searches by ids.
      • status
        • Get input count per status.
      • stream
        • Streams all the inputs starting from oldest assets.
      • uploads
        • Start uploading a file archive containing inputs. Will create and return an inputs-add-job for tracking progress.
      • {inputId}
        • annotations
          • {annotationId}
            • Get a specific annotation from an app.
            • Delete a single annotation.
        • video_manifest
          • Get a video input manifest.
        • Get a specific input from an app.
        • Delete a single input asynchronously.
      • List all the inputs.
      • Delete multiple inputs in one request. This call is asynchronous.
      • Add 1 or more input to an app. The actual inputs processing is asynchronous.
      • Patch one or more inputs.
    • label_orders
      • {labelOrderId}
        • Get a label order.
      • List label orders.
      • Delete multiple label orders in one request. this do not change task status
      • Add Label orders.
      • Patch one or more label orders.
      • List label orders.
      • Patch one or more label orders.
    • models
      • searches
        • Search over the models to find one or more you're looking for. This leverage the "body" parameter because we also have page and per_page as url query param variables in this request.
      • types
        • {modelTypeId}
          • Get a specific model type.
        • List all the model types available in the platform. This MUST be above ListModels so that the /models/types endpoint takes precedence.
      • {modelId}
        • check_consents
          • Update model check consents
        • inputs
          • List all the inputs.
        • languages
          • Update model languages tags
        • output_info
          • Get a the output info for a given model_id or model_id/version_id combo.
        • outputs
          • Get predicted outputs from the model.
        • publish
          • PostModelVersionsPublish
        • references
          • Lists model references tied to a particular model id.
        • toolkits
          • Update model toolkits tags
        • unpublish
          • PostModelVersionsUnPublish
        • usecases
          • Update model use_cases tags
        • versions
          • {modelVersionId}
            • evaluations
              • {evaluationId}
              • Deprecated, use GetEvaluation instead List the evaluation metrics for a model version.
              • Deprecated, use PostEvaluations instead
            • input_examples
              • {exampleId}
                • GetModelVersionInputExample
              • ListModelVersionInputExamples
          • {versionId}
            • inputs
              • List all the inputs.
            • metrics
              • Deprecated: Use GetEvaluation instead Get the evaluation metrics for a model version.
              • Deprecated, use PostEvaluations instead Run the evaluation metrics for a model version.
            • output_info
              • Get a the output info for a given model_id or model_id/version_id combo.
            • outputs
              • Get predicted outputs from the model.
            • Get a specific model from an app.
            • Delete a single model.
          • List all the models.
          • Create a new model version to trigger training of the model.
        • Get a specific model from an app.
        • Delete a single model.
      • List all the models.
      • Delete multiple models in one request.
      • Add a models to an app.
      • Patch one or more models.
    • modules
      • List all the modules in community, by user or by app.
    • my_scopes
      • API Keys in the public API -- request is itself Key authorized, and will tell the user the scopes/access of the key/credential they're providing, as computed by our authorizer:
    • myscopes
      • API Keys in the public API -- request is itself Key authorized, and will tell the user the scopes/access of the key/credential they're providing, as computed by our authorizer:
    • myscopesroot
      • V2_MyScopesRoot
    • open_source_licenses
      • List all the supported open source licenses in the platform.
    • resource_counts
      • List the resource counts for the app.
    • searches
      • {id}
        • Get a saved legacy search.
        • Delete a saved search.
        • Execute a previously saved legacy search.
      • List all saved legacy searches.
      • Execute a new search and optionally save it.
      • Patch saved legacy searches by ids.
    • stats
      • values
        • aggregate
          • PostStatValuesAggregate
        • PostStatValues
    • status_codes
      • {statusCodeId}
        • Get more details for a status code.
      • List all status codes.
    • tasks
      • {taskId}
        • annotations
          • count
            • Task annotation count
        • assignments
          • List next non-labeled and unassigned inputs from task's dataset
        • inputs
          • count
            • Task Input count
          • samples
            • Get a specific input from an app.
        • Get a specific task from an app.
      • List tasks from an app.
      • Delete multiple tasks in one request.
      • Add tasks to an app.
      • Patch one or more tasks.
    • trending_metrics
      • views
        • {viewType}
          • List the view metrics for a detail view
    • uploads
      • {uploadId}
        • content_parts
          • Upload a part of a multipart upload. Behaviour on completion depends on the endpoint that was used to initiate the upload.
        • V2_GetUpload2
      • V2 List Uploads2
      • V2_DeleteUploads2
      • V2_PostUploads2
    • users
      • {userAppId.userId}
        • apps
          • ids
            • Patch apps ids.
          • searches
            • Search over the applications to find one or more you're looking for.
          • {userAppId.appId}
            • annotation_filters
              • {annotationFilterId}
                • Get a specific annotation filter.
              • List all the annotation filters.
              • Delete one or more annotation filters in a single request.
              • Add annotation filters.
              • Patch one or more annotation filters.
            • annotations
              • searches
                • metrics
                  • {id}
                    • Get the evaluation results between two search requests
                    • DeleteAnnotationSearchMetrics
                  • List the evaluation results between two search requests
                  • Evaluate the results of two search requests
                • Execute a search over annotations
                • Patch saved annotations searches by ids.
              • List all the annotation.
              • Delete multiple annotations in one request.
              • Post annotations.
              • Patch one or more annotations.
            • bulk_operations
              • {id}
                • Get the bulk operation details by ID
              • List all the bulk operations
              • delete one or more terminated bulk operations
              • Perform bulk operations on a list of inputs based on input source. Operation include add, update, delete of concepts, metadata and geo data. This is an Asynchronous process. Use ListBulkOperations or GetBulkOperation to check the status.
              • Cancel one or more bulk operations
            • collaborators
              • owner list users who the app is shared with
              • Delete existing collaborators.
              • add collaborators to an app.
              • Patch existing collaborators.
            • collectors
              • {collectorId}
                • Get a specific collector from an app.
              • List all the collectors.
              • Delete multiple collectors in one request. This call is asynchronous. Use DeleteCollector if you want a synchronous version.
              • Add a list of Collectors to an app. In the handler of this endpoint we also check for all the scopes of the POST /inputs endpoint. Those current scopes are listed here as a hard requirement. They are needed when adding the collectors just so we now that
              • Patch one or more collectors.
            • concepts
              • knowledge_graphs
                • List all domain graphs.
                • Post domain graphs.
              • mappings
                • jobs
                  • Start concept mapping jobs.
              • relations
                • List concept relations between concepts in the platform. MUST be above ListConcepts so that if concept_id is empty this will still match /concepts/relations to list all the concept relations in the app.
              • searches
                • Search over the concepts to find one or more you're looking for. This leverage the "body" parameter because we also have page and per_page as url query param variables in this request.
              • status
                • List all the concepts with their positive and negative counts
              • {conceptId}
                • languages
                  • {language}
                    • Get a specific concept from an app.
                  • List the concept in all the translated languages.
                  • Add a new translation for this concept.
                  • Patch the name for a given language names by passing in a list of concepts with the new names for the languages.
                • relations
                  • List concept relations between concepts in the platform. MUST be above ListConcepts so that if concept_id is empty this will still match /concepts/relations to list all the concept relations in the app.
                  • Post concept relations to create relations between concepts in the platform.
                  • Post concept relations to create relations between concepts in the platform.
                • Get a specific concept from an app.
              • List all the concepts.
              • Add a concept to an app.
              • Patch one or more concepts.
            • datasets
              • inputs
                • search_add
                  • jobs
                    • {jobId}
                      • Get a specific job.
              • {datasetId}
                • inputs
                  • {inputId}
                    • Get a specific dataset input.
                  • List all the dataset inputs in a dataset.
                  • Delete one or more dataset inputs in a single request.
                  • Add dataset inputs to a dataset. The process is not atomic, i.e. if there are errors with some dataset inputs, others might still be added. The response reports - SUCCESS if all dataset inputs were added, - MIXED_STATUS if only some dataset inputs wer
                • versions
                  • {datasetVersionId}
                    • exports
                      • Create export of a dataset version.
                    • metrics
                      • V2 List Dataset Version Metrics Groups
                    • Get a specific dataset version.
                  • List all the dataset versions.
                  • Delete one or more dataset versions in a single request.
                  • Add dataset versions to a dataset.
                  • Patch one or more dataset versions.
                • Get a specific dataset.
              • List all the datasets.
              • Delete one or more datasets in a single request.
              • Add datasets to an app. The process is atomic, i.e. either all or no datasets are added. If there is an error for one dataset, the process will stop, revert the transaction and return the error.
              • Patch one or more datasets. The process is atomic, i.e. either all or no datasets are patched. If there is an error for one dataset, the process will stop, revert the transaction and return the error.
            • duplications
              • start to duplicate an app which copies all the inputs, annotations, models, concepts etc. to a new app. this is an async process, you should use ListAppDuplications or GetAppDuplication to check the status.
            • evaluations
              • {evaluationId}
                • V2 Get Evaluation
              • V2 List Evaluations
              • V2 Post Evaluations
            • inputs
              • annotations
                • Delete multiple annotations in one request.
              • data_sources
                • Initiates retrieval of inputs from cloud storage from a user provided data source. Will create and return an inputs-add-job for tracking progress. Archives will be extracted and their contents will be processed as inputs.
              • jobs
                • add
                  • {id}
                    • Get the input add job details by ID
                    • cancel the input add job by ID
                  • List all the inputs add jobs
                • extraction
                  • {inputsExtractionJobId}
                    • Get the input extraction job details by ID
                  • List all the input extraction jobs
                  • V2_CancelInputsExtractionJobs
              • searches
                • Execute a search over inputs
                • Patch saved inputs searches by ids.
              • status
                • Get input count per status.
              • stream
                • Streams all the inputs starting from oldest assets.
              • uploads
                • Start uploading a file archive containing inputs. Will create and return an inputs-add-job for tracking progress.
              • {inputId}
                • annotations
                  • {annotationId}
                    • Get a specific annotation from an app.
                    • Delete a single annotation.
                • video_manifest
                  • Get a video input manifest.
                • Get a specific input from an app.
                • Delete a single input asynchronously.
              • List all the inputs.
              • Delete multiple inputs in one request. This call is asynchronous.
              • Add 1 or more input to an app. The actual inputs processing is asynchronous.
              • Patch one or more inputs.
            • installed_module_versions
              • {installedModuleVersionId}
                • key
                  • Assign a key that the caller owns to be used when accessing this installed module version If this endpoint is called with a different key then it overwrites what is there.
                • Get installed modules vesrions for an app.
              • List installed modules vesrions for an app.
              • Uninstall an installed module version which will deploy the specific ModuleVersion to the app in the url. This cleaned up any associated caller keys so needs the Keys_Delete scope.
              • Install a new module version which will deploy the specific ModuleVersion to the app in the url.
            • keys
              • List keys by app_id
            • label_orders
              • {labelOrderId}
                • Get a label order.
              • List label orders.
              • Delete multiple label orders in one request. this do not change task status
              • Add Label orders.
              • Patch one or more label orders.
              • List label orders.
              • Delete multiple label orders in one request. this do not change task status
            • models
              • ids
                • Patch one or more models ids.
              • searches
                • Search over the models to find one or more you're looking for. This leverage the "body" parameter because we also have page and per_page as url query param variables in this request.
              • types
                • {modelTypeId}
                  • Get a specific model type.
                • List all the model types available in the platform. This MUST be above ListModels so that the /models/types endpoint takes precedence.
              • {modelId}
                • check_consents
                  • Update model check consents
                • concepts
                  • List models concepts.
                • inputs
                  • List all the inputs.
                • languages
                  • Update model languages tags
                • output_info
                  • Get a the output info for a given model_id or model_id/version_id combo.
                • outputs
                  • Get predicted outputs from the model.
                • publish
                  • PostModelVersionsPublish
                • references
                  • Lists model references tied to a particular model id.
                • toolkits
                  • Update model toolkits tags
                • unpublish
                  • PostModelVersionsUnPublish
                • usecases
                  • Update model use_cases tags
                • versions
                  • {modelVersionId}
                    • evaluations
                      • {evaluationId}
                        • Deprecated, use GetEvaluation instead Get an evaluation metrics for a model version.
                      • Deprecated, use GetEvaluation instead List the evaluation metrics for a model version.
                      • Deprecated, use PostEvaluations instead
                    • input_examples
                      • {exampleId}
                        • GetModelVersionInputExample
                      • ListModelVersionInputExamples
                  • {versionId}
                    • concepts
                      • List models concepts.
                    • inputs
                      • List all the inputs.
                    • metrics
                      • Deprecated: Use GetEvaluation instead Get the evaluation metrics for a model version.
                      • Deprecated, use PostEvaluations instead Run the evaluation metrics for a model version.
                    • output_info
                      • Get a the output info for a given model_id or model_id/version_id combo.
                    • outputs
                      • Get predicted outputs from the model.
                    • Get a specific model from an app.
                    • Delete a single model.
                  • List all the models.
                  • Create a new model version to trigger training of the model.
                  • PatchModelVersions
                • Get a specific model from an app.
                • Delete a single model.
              • List all the models.
              • Delete multiple models in one request.
              • Add a models to an app.
              • Patch one or more models.
            • modules
              • {moduleId}
                • versions
                  • {moduleVersionId}
                    • Get a specific module version for a module.
                  • List all the modules versions for a given module.
                  • Delete a multiple module version.
                  • Create a new module version to trigger training of the module.
                • Get a specific module from an app.
              • List all the modules in community, by user or by app.
              • Delete multiple modules in one request.
              • Add a modules to an app.
              • Patch one or more modules.
            • myscopes
              • API Keys in the public API -- request is itself Key authorized, and will tell the user the scopes/access of the key/credential they're providing, as computed by our authorizer:
            • resource_counts
              • List the resource counts for the app.
            • searches
              • {id}
                • Get a saved legacy search.
                • Delete a saved search.
                • Execute a previously saved legacy search.
              • List all saved legacy searches.
              • Execute a new search and optionally save it.
              • Patch saved legacy searches by ids.
            • stats
              • values
                • aggregate
                  • PostStatValuesAggregate
                • PostStatValues
            • task
              • {taskId}
                • annotations
                  • status
                    • Patch annotations status by worker id and task id.
            • tasks
              • {taskId}
                • annotations
                  • count
                    • Task annotation count
                • assignments
                  • List next non-labeled and unassigned inputs from task's dataset
                  • PutTaskAssignments evaluates all the annotations by labeler (authenticated user) for given task (task_id) and input (input_id).
                • inputs
                  • count
                    • Task Input count
                  • samples
                    • Get a specific input from an app.
                • Get a specific task from an app.
              • List tasks from an app.
              • Delete multiple tasks in one request.
              • Add tasks to an app.
              • Patch one or more tasks.
            • trending_metrics
              • views
                • {viewType}
                  • {objectId}
                    • Increase the view metric for a detail view
                  • List the view metrics for a detail view
            • uploads
              • {uploadId}
                • content_parts
                  • Upload a part of a multipart upload. Behaviour on completion depends on the endpoint that was used to initiate the upload.
                • V2 Get Upload
              • V2_ListUploads
              • V2_DeleteUploads
              • V2_PostUploads
            • workflows
              • ids
                • Patch one or more workflows ids.
              • {workflowId}
                • publish
                  • V2 Post Workflow Versions Publish
                • results
                  • similarity
                    • Compare embeddings distances using a workflow
                  • Predict using a workflow.
                • unpublish
                  • V2 Post Workflow Versions Un Publish
                • versions
                  • {versionId}
                    • results
                      • similarity
                        • Compare embeddings distances using a workflow
                      • Predict using a workflow.
                  • {workflowVersionId}
                    • Get single workflow version.
                  • List workflow versions.
                  • Delete workflow versions.
                  • Patch workflow versions.
                • Get a specific workflow from an app.
                • Delete a single workflow.
              • List all the workflows.
              • Delete multiple workflows in one request.
              • Add a workflow to an app.
              • Patch one or more workflows.
            • Get a specific app from an app.
            • Search over the apps to find one or more you're looking for. This leverage the "body" parameter because we also have page and per_page as url query param variables in this request.
            • Patch one app.
          • List all the apps.
          • Add a app to an app. This needs to load the default workflow to make a copy, validating all the models in it, and then writing the new workflow back to this new app.
          • Patch one or more apps.
        • collaborations
          • Collaboration includes the app user are invitied to work on
        • datasets
          • List all the datasets.
        • duplications
          • {appDuplicationId}
            • get the app duplication status
          • list all the app duplications user triggers
        • evaluations
          • V2_ListEvaluations2
        • keys
          • {keyId}
            • Get a specific key from an app.
            • Search over the keys to find one or more you're looking for. This leverage the "body" parameter because we also have page and per_page as url query param variables in this request.
          • List all the keys.
          • Add a key to an app.
          • Patch one or more keys.
        • models
          • List all the models.
        • modules
          • List all the modules in community, by user or by app.
        • myscopes
          • V2_MyScopesUser
        • runners
          • {runnerId}
            • items
              • {itemId}
                • outputs
                  • Post back outputs from remote runners
              • List items for the remote runner to work on.
            • Get a specific runner from an app.
          • List all the runners in community, by user or by app.
          • Delete multiple runners in one request.
          • Add a runners to an app.
        • scopes
          • List all auth scopes available to me as a user.
        • validate_password
          • Validate new password in real-time for a user
        • workflows
          • List all the workflows.
        • Get user information
    • validate_password
      • Validate new password in real-time for a user
    • workflows
      • {workflowId}
        • publish
          • V2_PostWorkflowVersionsPublish2
        • results
          • similarity
            • Compare embeddings distances using a workflow
          • Predict using a workflow.
        • unpublish
          • V2_PostWorkflowVersionsUnPublish2
        • versions
          • {workflowVersionId}
            • Get single workflow version.
          • List workflow versions.
          • Delete workflow versions.
          • Patch workflow versions.
        • Get a specific workflow from an app.
        • Delete a single workflow.
      • List all the workflows.
      • Delete multiple workflows in one request.
      • Add a workflow to an app.
      • Patch one or more workflows.
  1. CLARIFAI API 基础知识

gRPC 与 HTTP 通道

Clarifai API 为您提供加密的 gRPC 通道以及用于发出请求的 HTTPS+JSON 通道。为什么有不同的选择?
了解使用基于 gRPC 构建的 Clarifai API 的诸多便利优势。

我们最初为什么要在 gRPC 上构建 API ?#

grpc 与 http clarifai

尖端性能#

Clarifai gRPC 旨在提供轻量级微服务。这是 Clarifai Amada 能够加载和平衡数千个不同机器学习模型实例并大规模交付 MLOps 的关键之一。凭借低延迟和高吞吐量的通信,我们可以为您提供高性能的机器学习服务,无论您身在何处。
Clarifai 还使用 gRPC 来减少网络限制。我们的 API 消息使用 Protobuf 进行序列化,Protobuf 是一种紧凑的二进制(尽管非人类可读)消息格式,始终小于等效的 JSON。gRPC Protobuf 在服务器和客户端上的序列化速度非常快。
gRPC 专为 HTTP/2 设计,HTTP/2 是 HTTP 的主要修订版本,与 HTTP 相比具有显着的性能优势。HTTP/2 协议在发送和接收消息时都很高效。HTTP/2 还允许通过单个 TCP 连接复用多个 HTTP/2 调用,从而消除了队头阻塞。

干净的代码和资源管理#

关于如何使用 JSON 构建 HTTP API 根本没有正式的定义,并且关于 URL、HTTP 动词和响应代码的最佳格式一直存在争论。gRPC 规范规定了 gRPC 服务必须遵循的格式,这意味着跨平台和实现的行为是一致的。
由于 gRPC 还允许客户端指定他们愿意等待 RPC 完成的时间,因此资源管理也变得更加容易。截止日期被发送到服务器,并且服务器能够“超时”正在进行的 gRPC/HTTP/数据库请求。

语言的礼物#

Clarifai 是一个全球性的多语言组织。我们为我们的模型提供多语言支持,我们的 API 也是“多语言”的。Clarifai 利用 gRPC 工具支持所有流行的开发语言这一事实,我们为客户提供许多最流行的编程语言。
客户端的代码生成创建了强类型客户端,并消除了客户端和服务器上的消息重复。Clarifai 自动从 gRPC 服务创建 RESTful JSON Web API。这使我们能够同时支持 gRPC 和 JSON Web API,而无需重复为两者构建单独的服务。

流媒体功能#

许多有前途的机器学习用例都需要双向实时通信。gRPC 提供对双向流的支持,允许 gRPC 服务实时推送消息而无需轮询。使用我们的 gRPC 客户端时,本机支持所有流组合:一元(无流)、服务器到客户端流、客户端到服务器流和双向流。

何时使用 HTTP通道#

我们建议大多数客户在大多数用例中使用加密的 gRPC 通道,但 HTTP+JSON 通道确实有其优点:

熟悉度#

许多开发人员都会熟悉使用 RESTful JSON Web API。在这些情况下,您可能需要评估开发时间和 gRPC 通道提供的额外性能之间的权衡。

浏览器支持#

如今从浏览器直接调用 gRPC 服务是不可能的。gRPC 使用目前主流浏览器不支持的 HTTP/2 功能。

人类可读性#

HTTP API 请求以文本形式发送,可供人类读取和创建。默认情况下,gRPC 消息使用 Protobuf 进行编码。虽然序列化 Protobuf 更高效且有效负载更小,但其二进制格式不是人类可读的。需要额外的工具来分析 Protobuf 有效负载并手动编写请求。
上一页
Clarifai API 基础知识
下一页
支持的格式
Built with