CarbonAI 0.3.22

CarbonAI 0.3.22

Konfig Publisher 维护。



CarbonAI 0.3.22

  • carbon.ai

Visit Carbon

无论来源如何,将外部数据连接到 LLM。

CocoaPods

目录

安装

Swift 包管理器

  1. 在 Xcode 中选择 文件 > 添加包… 并将仓库 URL 输入为 https://github.com/Carbon-for-Developers/carbon-swift-sdk
  2. 从我们的 标签页面 选择最新版本编号。
  3. CarbonAI 产品添加到 您的应用程序的目标 中。

Carthage

  1. 将此行添加到您的 Cartfile 中。
github "Carbon-for-Developers/carbon-swift-sdk"
  1. 按照 Carthage 安装说明 进行操作。
  2. 将来,要更新到 SDK 的最新版本,请运行以下命令:carthage update carbon-swift-sdk

CocoaPods

  1. source 'https://github.com/CocoaPods/Specs.git' 添加到您的 Podfile 中。
  2. pod 'CarbonAI', '~> 0.2.2' 添加到您的 Podfile 中。

您的 Podfile 应该看起来像:

# Podfile
source 'https://github.com/CocoaPods/Specs.git'

target 'Example' do
  pod 'CarbonAI', '~> 0.2.2'
end
  1. 运行 pod install
❯ pod install
Analyzing dependencies
Downloading dependencies
Installing CarbonAI 0.2.2
Generating Pods project
Integrating client project
Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.
  1. 将来,要更新到 SDK 的最新版本,请运行:pod update CarbonAI

入门

import CarbonAI

// 1) Get an access token for a customer
let carbon = CarbonAIClient(
	accessToken: nil,
    apiKey: "API_KEY",
    customerId: "CUSTOMER_ID"
)

let token = try await carbon.auth.getAccessToken()

// 2) Use the access token to authenticate moving forward
let carbonWithToken = CarbonAIClient(
	accessToken: token!.accessToken,
	apiKey: nil,
	customerId: nil
)

// use SDK as usual
white_labeling = try await carbonWithToken.auth.get_white_labeling()
// etc.

参考

carbonai.auth.getAccessToken

获取访问令牌

🛠️ 用法

let getAccessTokenResponse = try await carbonai.auth.getAccessToken()

🔄 返回

TokenResponse

🌐 端点

/auth/v1/access_token GET

🔙 返回目录


carbonai.auth.getWhiteLabeling

返回组织是否为白标,哪些集成是白标的

:param current_user: 当前用户 :param db: 数据库会话 :return: a WhiteLabelingResponse

🛠️ 用法

let getWhiteLabelingResponse = try await carbonai.auth.getWhiteLabeling()

🔄 返回

WhiteLabelingResponse

🌐 端点

/auth/v1/white_labeling GET

🔙 返回目录


carbonai.dataSources.queryUserDataSources

用户数据源

🛠️ 用法

let pagination = Pagination(
    limit: 123,
    offset: 123
)
let orderBy = OrganizationUserDataSourceOrderByColumns(
    
)
let orderDir = OrderDir(
    
)
let filters = OrganizationUserDataSourceFilters(
    source: DataSourceTypeNullable.googleDrive,
    ids: [
    123
    ],
    revokedAccess: false
)
let queryUserDataSourcesResponse = try await carbonai.dataSources.queryUserDataSources(
    pagination: pagination,
    orderBy: orderBy,
    orderDir: orderDir,
    filters: filters
)

⚙️ 参数

pagination: Pagination
order_by: OrganizationUserDataSourceOrderByColumns
order_dir: OrderDir

🔄 返回

OrganizationUserDataSourceResponse

🌐 端点

/user_data_sources POST

🔙 返回目录


carbonai.dataSources.revokeAccessToken

撤销访问令牌

🛠️ 用法

let dataSourceId = 987
let revokeAccessTokenResponse = try await carbonai.dataSources.revokeAccessToken(
    dataSourceId: dataSourceId
)

⚙️ 参数

data_source_id: Int

🔄 返回

GenericSuccessResponse

🌐 端点

/revoke_access_token POST

🔙 返回目录


carbonai.embeddings.getDocuments

对于预过滤文件,使用 tags_v2tags(现在已弃用)更受欢迎。如果同时指定了 tags_v2tags,则忽略 tagstags_v2 通过使用 "AND"、"OR" 和否定逻辑启用构建复杂过滤器。以下输入作为示例

{
    "OR": [
        {
            "key": "subject",
            "value": "holy-bible",
            "negate": false
        },
        {
            "key": "person-of-interest",
            "value": "jesus christ",
            "negate": false
        },
        {
            "key": "genre",
            "value": "religion",
            "negate": true
        }
        {
            "AND": [
                {
                    "key": "subject",
                    "value": "tao-te-ching",
                    "negate": false
                },
                {
                    "key": "author",
                    "value": "lao-tzu",
                    "negate": false
                }
            ]
        }
    ]
}

在这种情况下,将按以下方式过滤文件

  1. "subject" = "holy-bible" OR
  2. "person-of-interest" = "jesus christ" OR
  3. "genre" != "religion" OR
  4. "subject" = "tao-te-ching" AND "author" = "lao-tzu"

请注意,查询的顶级必须是一个 "OR" 或 "AND" 数组。目前,嵌套限制为 3。对于带 "key"、"value" 和 "negate" 键的标签块,以下类型规则适用

  1. "key" 不可选,必须是一个 string
  2. "value" 不可选,可以是 any 或 list[any]
  3. "negate" 是可选的,必须是 truefalse。如果存在且为 true,则在结果查询中否定过滤块。默认为 false

查询嵌入时,您可以从请求中可选地指定 media_type 参数。默认情况下(如果未设置),它等于 "TEXT"。这意味着查询将针对已解析为文本的文件执行(目前,这涵盖了所有文件,除了图像文件)。如果等于 "IMAGE",则针对图像文件(目前为 .jpg.png 文件)执行查询。您可以视此字段为在 file_ids 上设置的任何过滤器之上的额外过滤器。

hybrid_search 设置为 true 时,在信息检索过程中使用关键字搜索和语义搜索的组合来排名和选择候选嵌入。默认情况下,这些搜索方法在排名过程中具有相等的权重。要调整每种搜索方法的权重(或 "重要性"),您可以使用 hybrid_search_tuning_parameters 属性。不同调整参数的说明如下

  • weight_a: 分配给语义搜索的权重
  • weight_b: 分配给关键字搜索的权重

您必须确保所有 sum(weight_a, weight_b,..., weight_n)(对于所有 n 权重)都等于 1。等式具有 0.001 的误差容限,以解决可能的浮点问题。

为了在一组文档中使用混合搜索为客户,需要启用两个标志

  1. 使用 /modify_user_configuration 接口为顾客启用 sparse_vectors。此请求的负载体如下所示
{
  "configuration_key_name": "sparse_vectors",
  "value": {
    "enabled": true
  }
}
  1. 确保您想要在文档上执行搜索的混合搜索已启用。对于 /uploadfile 接口,可以通过设置以下查询参数来实现: generate_sparse_vectors=true

Carbon 支持多种模型用于生成文件嵌入。对于图像,我们支持 Vertex AI 的多模态模型;对于文本,我们支持 OpenAI 的 text-embedding-ada-002 和 Cohere 的 embed-multilingual-v3.0。可以通过 embedding_model 参数指定模型(在 /embeddings 的 POST 身体中,以及在 /uploadfile 中的查询参数)。如果未提供模型,则默认使用 text-embedding-ada-002。在执行嵌入查询时,将考虑使用指定模型生成的文件嵌入。例如,如果文件 A 和 B 使用 OPENAI 生成嵌入,而文件 C 和 D 使用 COHERE_MULTILINGUAL_V3 生成嵌入,则默认情况下,查询将只考虑文件 A 和 B。如果将 COHERE_MULTILINGUAL_V3 作为 embedding_model/embeddings 中指定,则只考虑文件 C 和 D。请确保您想要在查询中考虑的所有文件的嵌入都通过同一模型生成。目前,请勿将 VERTEX_MULTIMODAL 作为 embedding_model 设置。此模型在 Carbon 检测到图像文件时会自动使用。

🛠️ 用法

let query = "query_example"
let k = 987
let tags = "TODO"
let queryVector = [
123
]
let fileIds = [
123
]
let parentFileIds = [
123
]
let tagsV2 = "TODO"
let includeTags = true
let includeVectors = true
let includeRawFile = true
let hybridSearch = true
let hybridSearchTuningParameters = HybridSearchTuningParamsNullable(
    weightA: 123,
    weightB: 123
)
let mediaType = FileContentTypesNullable(
    
)
let embeddingModel = EmbeddingGeneratorsNullable(
    
)
let getDocumentsResponse = try await carbonai.embeddings.getDocuments(
    query: query,
    k: k,
    tags: tags,
    queryVector: queryVector,
    fileIds: fileIds,
    parentFileIds: parentFileIds,
    tagsV2: tagsV2,
    includeTags: includeTags,
    includeVectors: includeVectors,
    includeRawFile: includeRawFile,
    hybridSearch: hybridSearch,
    hybridSearchTuningParameters: hybridSearchTuningParameters,
    mediaType: mediaType,
    embeddingModel: embeddingModel
)

⚙️ 参数

查询:String

针对要获取相关块和嵌入的查询。

数量:Int

要返回的相关块的数量。

标签:[String: Tags1]

一个标签集合,用于限定搜索范围。已弃用并可能在未来移除。

查询向量:[Double]

可选的查询向量,用于获取相关块和嵌入。必须使用在搜索过程中生成嵌入的同一模型生成。不能同时提供 queryquery_vector

文件标识:[Int]

可选的文件 ID 列表,用于限定搜索范围。

父文件标识:[Int]

可选的父文件 ID 列表,用于限定搜索范围。父文件描述了一个文件所属的文件(例如文件夹)

标签集合 V2:AnyCodable

一个标签集合,用于限定搜索范围。使用此选项代替已弃用的 tags

包含标签:Bool

标志,用于控制是否在响应中包含每个块的标签。

包含向量:Bool

标志,用于控制是否在响应中包含嵌入向量。

包含原始文件:Bool

标志,用于控制是否在响应中包含每个块的原始文件的签名 URL。

混合搜索:Bool

标志,用于控制是否执行混合搜索。

混合搜索调优参数:HybridSearchTuningParamsNullable
媒体类型:FileContentTypesNullable
嵌入模型:EmbeddingGeneratorsNullable

🔄 返回

文档响应列表

🌐 端点

/embeddings POST

🔙 返回目录


carbonai.embeddings.getEmbeddingsAndChunks

检索嵌入和内容

🛠️ 用法

let filters = EmbeddingsAndChunksFilters(
    userFileId: 123,
    embeddingModel: EmbeddingGeneratorsNullable.openai
)
let pagination = Pagination(
    limit: 123,
    offset: 123
)
let orderBy = EmbeddingsAndChunksOrderByColumns(
    
)
let orderDir = OrderDir(
    
)
let includeVectors = true
let getEmbeddingsAndChunksResponse = try await carbonai.embeddings.getEmbeddingsAndChunks(
    filters: filters,
    pagination: pagination,
    orderBy: orderBy,
    orderDir: orderDir,
    includeVectors: includeVectors
)

⚙️ 参数

pagination: Pagination
排序字段:EmbeddingsAndChunksOrderByColumns
order_dir: OrderDir
包含向量:Bool

🔄 返回

嵌入和块响应

🌐 端点

/text_chunks POST

🔙 返回目录


carbonai.embeddings.uploadChunksAndEmbeddings

上传块和嵌入

🛠️ 用法

let embeddingModel = EmbeddingGenerators(
    
)
let chunksAndEmbeddings = [
SingleChunksAndEmbeddingsUploadInput(
    fileId: 123,
    chunkSize: 123,
    chunkOverlap: 123,
    chunksAndEmbeddings: [
    ChunksAndEmbeddings(
        chunkNumber: 123,
        chunk: "chunk_example",
        embedding: [
        123
        ]
    )
    ]
)
]
let overwriteExisting = true
let chunksOnly = true
let customCredentials = "TODO"
let uploadChunksAndEmbeddingsResponse = try await carbonai.embeddings.uploadChunksAndEmbeddings(
    embeddingModel: embeddingModel,
    chunksAndEmbeddings: chunksAndEmbeddings,
    overwriteExisting: overwriteExisting,
    chunksOnly: chunksOnly,
    customCredentials: customCredentials
)

⚙️ 参数

嵌入模型: EmbeddingGenerators
chunk_and_embeddings: [SingleChunksAndEmbeddingsUploadInput]
overwrite_existing: Bool
chunks_only: Bool
custom_credentials: AnyCodable

🔄 返回

GenericSuccessResponse

🌐 端点

/upload_chunks_and_embeddings POST

🔙 返回目录


carbonai.files.createUserFileTags

标签是一个键值对,可以添加到文件中。这个对可以用于搜索(例如嵌入搜索)以缩小搜索范围。文件可以有任意数量的标签。以下是不能使用的保留键:

  • db_embedding_id
  • organization_id
  • user_id
  • organization_user_file_id

Carbon 目前支持两种标签值的类型 - stringlist。键只能是 string。如果使用了 stringlist 以外的值,它们会自动转换为字符串(例如,4 会变成 "4")。

🛠️ 用法

let tags = "TODO"
let organizationUserFileId = 987
let createUserFileTagsResponse = try await carbonai.files.createUserFileTags(
    tags: tags,
    organizationUserFileId: organizationUserFileId
)

⚙️ 参数

标签:[String: Tags1]
organization_user_file_id: Int

🔄 返回

UserFile

🌐 端点

/create_user_file_tags POST

🔙 返回目录


carbonai.files.delete

删除文件端点

🛠️ 用法

let fileId = 987
let deleteResponse = try await carbonai.files.delete(
    fileId: fileId
)

⚙️ 参数

fileId: Int

🔄 返回

GenericSuccessResponse

🌐 端点

/deletefile/{file_id} DELETE

🔙 返回目录


carbonai.files.deleteFileTags

删除文件标签

🛠️ 用法

let tags = [
"inner_example"
]
let organizationUserFileId = 987
let deleteFileTagsResponse = try await carbonai.files.deleteFileTags(
    tags: tags,
    organizationUserFileId: organizationUserFileId
)

⚙️ 参数

tags: [String]
organization_user_file_id: Int

🔄 返回

UserFile

🌐 端点

/delete_user_file_tags POST

🔙 返回目录


carbonai.files.deleteMany

删除文件端点

🛠️ 用法

let fileIds = [
123
]
let syncStatuses = [
ExternalFileSyncStatuses.delayed
]
let deleteNonSyncedOnly = true
let sendWebhook = true
let deleteChildFiles = true
let deleteManyResponse = try await carbonai.files.deleteMany(
    fileIds: fileIds,
    syncStatuses: syncStatuses,
    deleteNonSyncedOnly: deleteNonSyncedOnly,
    sendWebhook: sendWebhook,
    deleteChildFiles: deleteChildFiles
)

⚙️ 参数

文件标识:[Int]
sync_statuses: [ExternalFileSyncStatuses]
delete_non_synced_only: Bool
send_webhook: Bool
delete_child_files: Bool

🔄 返回

GenericSuccessResponse

🌐 端点

/delete_files POST

🔙 返回目录


carbonai.files.deleteV2

删除文件 V2 端点

🛠️ 用法

let filters = OrganizationUserFilesToSyncFilters(
    tags: "TODO",
    source: SourceProperty(
        
    ),
    name: "name_example",
    tagsV2: "TODO",
    ids: [
    123
    ],
    externalFileIds: [
    "externalFileIds_example"
    ],
    syncStatuses: [
    ExternalFileSyncStatuses.delayed
    ],
    parentFileIds: [
    123
    ],
    organizationUserDataSourceId: [
    123
    ],
    embeddingGenerators: [
    EmbeddingGenerators.openai
    ],
    rootFilesOnly: false,
    includeAllChildren: false,
    nonSyncedOnly: false,
    requestIds: [
    "requestIds_example"
    ]
)
let sendWebhook = true
let deleteV2Response = try await carbonai.files.deleteV2(
    filters: filters,
    sendWebhook: sendWebhook
)

⚙️ 参数

send_webhook: Bool

🔄 返回

GenericSuccessResponse

🌐 端点

/delete_files_v2 POST

🔙 返回目录


carbonai.files.getParsedFile

此路由已弃用。请使用 /user_files_v2 代替。

🛠️ 用法

let fileId = 987
let getParsedFileResponse = try await carbonai.files.getParsedFile(
    fileId: fileId
)

⚙️ 参数

fileId: Int

🔄 返回

PresignedURLResponse

🌐 端点

/parsed_file/{file_id} GET

🔙 返回目录


carbonai.files.getRawFile

此路由已弃用。请使用 /user_files_v2 代替。

🛠️ 用法

let fileId = 987
let getRawFileResponse = try await carbonai.files.getRawFile(
    fileId: fileId
)

⚙️ 参数

fileId: Int

🔄 返回

PresignedURLResponse

🌐 端点

/raw_file/{file_id} GET

🔙 返回目录


carbonai.files.queryUserFiles

对于预过滤文件,使用 tags_v2tags(现在已弃用)更受欢迎。如果同时指定了 tags_v2tags,则忽略 tagstags_v2 通过使用 "AND"、"OR" 和否定逻辑启用构建复杂过滤器。以下输入作为示例

{
    "OR": [
        {
            "key": "subject",
            "value": "holy-bible",
            "negate": false
        },
        {
            "key": "person-of-interest",
            "value": "jesus christ",
            "negate": false
        },
        {
            "key": "genre",
            "value": "religion",
            "negate": true
        }
        {
            "AND": [
                {
                    "key": "subject",
                    "value": "tao-te-ching",
                    "negate": false
                },
                {
                    "key": "author",
                    "value": "lao-tzu",
                    "negate": false
                }
            ]
        }
    ]
}

在这种情况下,将按以下方式过滤文件

  1. "subject" = "holy-bible" OR
  2. "person-of-interest" = "jesus christ" OR
  3. "genre" != "religion" OR
  4. "subject" = "tao-te-ching" AND "author" = "lao-tzu"

请注意,查询的顶级必须是一个 "OR" 或 "AND" 数组。目前,嵌套限制为 3。对于带 "key"、"value" 和 "negate" 键的标签块,以下类型规则适用

  1. "key" 不可选,必须是一个 string
  2. "value" 不可选,可以是 any 或 list[any]
  3. "negate" 是可选的,必须是 truefalse。如果存在且为 true,则在结果查询中否定过滤块。默认为 false

🛠️ 用法

let pagination = Pagination(
    limit: 123,
    offset: 123
)
let orderBy = OrganizationUserFilesToSyncOrderByTypes(
    
)
let orderDir = OrderDir(
    
)
let filters = OrganizationUserFilesToSyncFilters(
    tags: "TODO",
    source: SourceProperty(
        
    ),
    name: "name_example",
    tagsV2: "TODO",
    ids: [
    123
    ],
    externalFileIds: [
    "externalFileIds_example"
    ],
    syncStatuses: [
    ExternalFileSyncStatuses.delayed
    ],
    parentFileIds: [
    123
    ],
    organizationUserDataSourceId: [
    123
    ],
    embeddingGenerators: [
    EmbeddingGenerators.openai
    ],
    rootFilesOnly: false,
    includeAllChildren: false,
    nonSyncedOnly: false,
    requestIds: [
    "requestIds_example"
    ]
)
let includeRawFile = true
let includeParsedTextFile = true
let includeAdditionalFiles = true
let queryUserFilesResponse = try await carbonai.files.queryUserFiles(
    pagination: pagination,
    orderBy: orderBy,
    orderDir: orderDir,
    filters: filters,
    includeRawFile: includeRawFile,
    includeParsedTextFile: includeParsedTextFile,
    includeAdditionalFiles: includeAdditionalFiles
)

⚙️ 参数

pagination: Pagination
order_by: OrganizationUserFilesToSyncOrderByTypes
order_dir: OrderDir
包含原始文件:Bool
include_parsed_text_file: Bool
include_additional_files: Bool

🔄 返回

UserFilesV2

🌐 端点

/user_files_v2 POST

🔙 返回目录


carbonai.files.queryUserFilesDeprecated

此路由已弃用。请使用 /user_files_v2 代替。

🛠️ 用法

let pagination = Pagination(
    limit: 123,
    offset: 123
)
let orderBy = OrganizationUserFilesToSyncOrderByTypes(
    
)
let orderDir = OrderDir(
    
)
let filters = OrganizationUserFilesToSyncFilters(
    tags: "TODO",
    source: SourceProperty(
        
    ),
    name: "name_example",
    tagsV2: "TODO",
    ids: [
    123
    ],
    externalFileIds: [
    "externalFileIds_example"
    ],
    syncStatuses: [
    ExternalFileSyncStatuses.delayed
    ],
    parentFileIds: [
    123
    ],
    organizationUserDataSourceId: [
    123
    ],
    embeddingGenerators: [
    EmbeddingGenerators.openai
    ],
    rootFilesOnly: false,
    includeAllChildren: false,
    nonSyncedOnly: false,
    requestIds: [
    "requestIds_example"
    ]
)
let includeRawFile = true
let includeParsedTextFile = true
let includeAdditionalFiles = true
let queryUserFilesDeprecatedResponse = try await carbonai.files.queryUserFilesDeprecated(
    pagination: pagination,
    orderBy: orderBy,
    orderDir: orderDir,
    filters: filters,
    includeRawFile: includeRawFile,
    includeParsedTextFile: includeParsedTextFile,
    includeAdditionalFiles: includeAdditionalFiles
)

⚙️ 参数

pagination: Pagination
order_by: OrganizationUserFilesToSyncOrderByTypes
order_dir: OrderDir
包含原始文件:Bool
include_parsed_text_file: Bool
include_additional_files: Bool

🔄 返回

UserFile

🌐 端点

/user_files POST

🔙 返回目录


carbonai.files.resync

重新同步文件

🛠️ 用法

let fileId = 987
let chunkSize = 987
let chunkOverlap = 987
let forceEmbeddingGeneration = true
let resyncResponse = try await carbonai.files.resync(
    fileId: fileId,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    forceEmbeddingGeneration: forceEmbeddingGeneration
)

⚙️ 参数

file_id: Int
chunk_size: Int
chunk_overlap: Int
force_embedding_generation: Bool

🔄 返回

UserFile

🌐 端点

/resync_file POST

🔙 返回目录


carbonai.files.upload

此端点用于直接将本地文件上传到 Carbon。POST 请求应该是 multipart 表单请求。请注意,目前set_page_as_boundary查询参数仅适用于 PDF。

  • 代码片段大小(token数量):
  • 代码片段重叠(token数量):
  • skip_embedding_generation:是否跳过生成代码片段和嵌入表示
  • set_page_as_boundary:如上所述
  • embedding_model:用于为文档片段生成嵌入表示的模型
  • use_ocr:是否在生成代码片段之前使用OCR作为预处理步骤(目前仅适用于PDF文件)
  • generate_sparse_vectors:是否为文件生成稀疏向量。对于混合搜索是必需的。
  • prepend_filename_to_chunks:是否将文件名附加到代码片段文本前

Carbon 支持多种模型用于生成文件嵌入。对于图像,我们支持 Vertex AI 的多模态模型;对于文本,我们支持 OpenAI 的 text-embedding-ada-002 和 Cohere 的 embed-multilingual-v3.0。可以通过 embedding_model 参数指定模型(在 /embeddings 的 POST 身体中,以及在 /uploadfile 中的查询参数)。如果未提供模型,则默认使用 text-embedding-ada-002。在执行嵌入查询时,将考虑使用指定模型生成的文件嵌入。例如,如果文件 A 和 B 使用 OPENAI 生成嵌入,而文件 C 和 D 使用 COHERE_MULTILINGUAL_V3 生成嵌入,则默认情况下,查询将只考虑文件 A 和 B。如果将 COHERE_MULTILINGUAL_V3 作为 embedding_model/embeddings 中指定,则只考虑文件 C 和 D。请确保您想要在查询中考虑的所有文件的嵌入都通过同一模型生成。目前,请勿将 VERTEX_MULTIMODAL 作为 embedding_model 设置。此模型在 Carbon 检测到图像文件时会自动使用。

🛠️ 用法

let file = URL(string: "https://example.com")!
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = false
let setPageAsBoundary = false
let embeddingModel = TextEmbeddingGenerators(
    
)
let useOcr = false
let generateSparseVectors = false
let prependFilenameToChunks = false
let maxItemsPerChunk = 987
let parsePdfTablesWithOcr = false
let uploadResponse = try await carbonai.files.upload(
    file: file,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    setPageAsBoundary: setPageAsBoundary,
    embeddingModel: embeddingModel,
    useOcr: useOcr,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    maxItemsPerChunk: maxItemsPerChunk,
    parsePdfTablesWithOcr: parsePdfTablesWithOcr
)

⚙️ 参数

文件:URL
chunkSizeInt

处理文件时要使用的tiktoken标记的代码片段大小。

chunkOverlapInt

处理文件时要使用的tiktoken标记的代码片段重叠。

skipEmbeddingGenerationBool

控制处理文件时是否生成和存储嵌入表示的标志。

setPageAsBoundaryBool

控制是否将一整个页面的内容设置为代码片段中可能出现的最大内容量。仅适用于PDF文件。更多信息请查看描述路由。

embeddingModelTextEmbeddingGenerators

用于嵌入文件片段的嵌入模型。

useOcrBool

在处理文件时是否使用OCR。仅适用于PDF文件。对包含表格、图片和/或扫描文本的文档很有用。

generateSparseVectorsBool

是否为文件生成稀疏向量。这使得文件有可能应用于混合搜索。

prependFilenameToChunksBool

是否将文件名附加到代码片段中。

maxItemsPerChunkInt

每个代码片段中的对象数量。仅适用于csv、tsv、xlsx和json文件。

parsePdfTablesWithOcrBool

当启用use_ocr时是否使用丰富的表格解析。

🔄 返回

UserFile

🌐 端点

/uploadfile POST

🔙 返回目录


carbonai.files.uploadFromUrl

从URL创建上传文件

🛠️ 用法

let url = "url_example"
let fileName = "fileName_example"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let setPageAsBoundary = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let useTextract = true
let prependFilenameToChunks = true
let maxItemsPerChunk = 987
let parsePdfTablesWithOcr = true
let uploadFromUrlResponse = try await carbonai.files.uploadFromUrl(
    url: url,
    fileName: fileName,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    setPageAsBoundary: setPageAsBoundary,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    useTextract: useTextract,
    prependFilenameToChunks: prependFilenameToChunks,
    maxItemsPerChunk: maxItemsPerChunk,
    parsePdfTablesWithOcr: parsePdfTablesWithOcr
)

⚙️ 参数

urlString
file_nameString
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
set_page_as_boundaryBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
use_textractBool
prepend_filename_to_chunksBool
max_items_per_chunkInt

每个代码片段中的对象数量。仅适用于csv、tsv、xlsx和json文件。

parse_pdf_tables_with_ocrBool

🔄 返回

UserFile

🌐 端点

/upload_file_from_url POST

🔙 返回目录


carbonai.files.uploadText

Carbon 支持多种模型用于生成文件嵌入。对于图像,我们支持 Vertex AI 的多模态模型;对于文本,我们支持 OpenAI 的 text-embedding-ada-002 和 Cohere 的 embed-multilingual-v3.0。可以通过 embedding_model 参数指定模型(在 /embeddings 的 POST 身体中,以及在 /uploadfile 中的查询参数)。如果未提供模型,则默认使用 text-embedding-ada-002。在执行嵌入查询时,将考虑使用指定模型生成的文件嵌入。例如,如果文件 A 和 B 使用 OPENAI 生成嵌入,而文件 C 和 D 使用 COHERE_MULTILINGUAL_V3 生成嵌入,则默认情况下,查询将只考虑文件 A 和 B。如果将 COHERE_MULTILINGUAL_V3 作为 embedding_model/embeddings 中指定,则只考虑文件 C 和 D。请确保您想要在查询中考虑的所有文件的嵌入都通过同一模型生成。目前,请勿将 VERTEX_MULTIMODAL 作为 embedding_model 设置。此模型在 Carbon 检测到图像文件时会自动使用。

🛠️ 用法

let contents = "contents_example"
let name = "name_example"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let overwriteFileId = 987
let embeddingModel = EmbeddingGeneratorsNullable(
    
)
let generateSparseVectors = true
let uploadTextResponse = try await carbonai.files.uploadText(
    contents: contents,
    name: name,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    overwriteFileId: overwriteFileId,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors
)

⚙️ 参数

contentsString
nameString
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
overwrite_file_idInt
嵌入模型:EmbeddingGeneratorsNullable
generate_sparse_vectorsBool

🔄 返回

UserFile

🌐 端点

/upload_text POST

🔙 返回目录


carbonai.health.check

健康

🛠️ 用法

let checkResponse = try await carbonai.health.check()

🌐 端点

/health GET

🔙 返回目录


carbonai.integrations.connectDataSource

连接数据源

🛠️ 用法

let authentication = AuthenticationProperty(
    source: "TODO",
    accessToken: "accessToken_example",
    refreshToken: "refreshToken_example",
    workspaceId: "workspaceId_example",
    tenantName: "tenantName_example",
    siteName: "siteName_example",
    subdomain: "subdomain_example",
    accessTokenSecret: "accessTokenSecret_example",
    username: "username_example",
    zoteroId: "zoteroId_example",
    organizationName: "organizationName_example",
    domain: "domain_example",
    apiKey: "apiKey_example",
    accessKey: "accessKey_example",
    accessKeySecret: "accessKeySecret_example"
)
let syncOptions = SyncOptions(
    tags: "TODO",
    chunkSize: 123,
    chunkOverlap: 123,
    skipEmbeddingGeneration: false,
    embeddingModel: EmbeddingGeneratorsNullable.openai,
    generateSparseVectors: false,
    prependFilenameToChunks: false,
    maxItemsPerChunk: 123,
    syncFilesOnConnection: true,
    setPageAsBoundary: false
)
let connectDataSourceResponse = try await carbonai.integrations.connectDataSource(
    authentication: authentication,
    syncOptions: syncOptions
)

⚙️ 参数

同步选项:SyncOptions

🔄 返回

ConnectDataSourceResponse

🌐 端点

/integrations/connect POST

🔙 返回目录


carbonai.integrations.connectFreshdesk

参考此文章获取API密钥https://support.freshdesk.com/en/support/solutions/articles/215517。确保您的API密钥拥有读取您账户解决方案的权限,并且您处于付费方案中。一旦您拥有API密钥,您就可以使用您的freshdesk域名发送请求到该端点。这将自动同步您的“解决方案”标签中的文章。以下附加参数可用于关联数据到同步的文章或修改同步行为。

🛠️ 用法

let domain = "domain_example"
let apiKey = "apiKey_example"
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGeneratorsNullable(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let syncFilesOnConnection = true
let requestId = "requestId_example"
let connectFreshdeskResponse = try await carbonai.integrations.connectFreshdesk(
    domain: domain,
    apiKey: apiKey,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    syncFilesOnConnection: syncFilesOnConnection,
    requestId: requestId
)

⚙️ 参数

域名:String
api_key:String
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型:EmbeddingGeneratorsNullable
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
sync_files_on_connection:Bool
request_id:String

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/freshdesk POST

🔙 返回目录


carbonai.integrations.connectGitbook

您需要访问令牌才能连接您的Gitbook账户。注意,权限将由生成访问令牌的用户定义,因此请确保您有权访问您要同步的空间。有关更多详细信息,请参阅此文章https://developer.gitbook.com/gitbook-api/authentication。此外,您需要指定您将从中同步数据的组织名称。

🛠️ 用法

let organization = "organization_example"
let accessToken = "accessToken_example"
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let syncFilesOnConnection = true
let requestId = "requestId_example"
let connectGitbookResponse = try await carbonai.integrations.connectGitbook(
    organization: organization,
    accessToken: accessToken,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    syncFilesOnConnection: syncFilesOnConnection,
    requestId: requestId
)

⚙️ 参数

组织:String
access_token:String
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
sync_files_on_connection:Bool
request_id:String

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/gitbook POST

🔙 返回目录


carbonai.integrations.createAwsIamUser

创建一个新的IAM用户,对他有权

  1. 列出所有存储桶。
  2. 从特定存储桶和对象中读取以与Carbon同步。确保任何未来的存储桶或对象都具有相同的权限。
一旦创建,为该用户生成访问密钥并与我们分享凭证。我们建议在测试此密钥之前进行测试。

🛠️ 用法

let accessKey = "accessKey_example"
let accessKeySecret = "accessKeySecret_example"
let createAwsIamUserResponse = try await carbonai.integrations.createAwsIamUser(
    accessKey: accessKey,
    accessKeySecret: accessKeySecret
)

⚙️ 参数

access_key:String
access_key_secret:String

🔄 返回

OrganizationUserDataSourceAPI

🌐 端点

/integrations/s3 POST

🔙 返回目录


carbonai.integrations.getOauthUrl

此端点可用于生成以下URL

  • OAuth基础连接器的OAuth URL
  • 用于文件同步的URL,如果用户已经拥有有效的访问令牌,则跳过OAuth流程并将其带到成功状态。

🛠️ 用法

let service = DataSourceType(
    
)
let tags = TODO
let scope = "scope_example"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGeneratorsNullable(
    
)
let zendeskSubdomain = "zendeskSubdomain_example"
let microsoftTenant = "microsoftTenant_example"
let sharepointSiteName = "sharepointSiteName_example"
let confluenceSubdomain = "confluenceSubdomain_example"
let generateSparseVectors = true
let prependFilenameToChunks = true
let maxItemsPerChunk = 987
let salesforceDomain = "salesforceDomain_example"
let syncFilesOnConnection = true
let setPageAsBoundary = true
let dataSourceId = 987
let connectingNewAccount = true
let requestId = "requestId_example"
let useOcr = true
let parsePdfTablesWithOcr = true
let getOauthUrlResponse = try await carbonai.integrations.getOauthUrl(
    service: service,
    tags: tags,
    scope: scope,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    zendeskSubdomain: zendeskSubdomain,
    microsoftTenant: microsoftTenant,
    sharepointSiteName: sharepointSiteName,
    confluenceSubdomain: confluenceSubdomain,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    maxItemsPerChunk: maxItemsPerChunk,
    salesforceDomain: salesforceDomain,
    syncFilesOnConnection: syncFilesOnConnection,
    setPageAsBoundary: setPageAsBoundary,
    dataSourceId: dataSourceId,
    connectingNewAccount: connectingNewAccount,
    requestId: requestId,
    useOcr: useOcr,
    parsePdfTablesWithOcr: parsePdfTablesWithOcr
)

⚙️ 参数

service:DataSourceType
tags:AnyCodable
scope:String
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型:EmbeddingGeneratorsNullable
zendesk_subdomain:String
microsoft_tenant:String
sharepoint_site_name:String
confluence_subdomain:String
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
max_items_per_chunkInt

每个代码片段中的对象数量。仅适用于csv、tsv、xlsx和json文件。

salesforce_domain:String
sync_files_on_connection:Bool

用于指定Carbon是否应在授权完成后自动尝试同步所有文件。这仅支持部分连接器,对于其他连接器将被忽略。支持的连接器:Intercom, Zendesk, Gitbook, Confluence, Salesforce, Freshdesk。

set_page_as_boundaryBool
data_source_id: Int

用于指定要从多个已连接的数据源同步的数据源。如果只有一个该类型的数据源连接或连接新账户,可以跳过。

connecting_new_account:Bool

用于连接新数据源。如果没有指定,我们将尝试根据类型和ID为现有数据源创建同步URL。

request_id:String

此请求ID将添加到所有使用生成的OAuth URL同步的文件

use_ocr:Bool

为支持的文件启用OCR。支持的格式:pdf。

parse_pdf_tables_with_ocrBool

🔄 返回

OuthURLResponse

🌐 端点

/integrations/oauth_url POST

🔙 返回目录


carbonai.integrations.listConfluencePages

要开始列出用户的Confluence页面,至少需要指定一个连接的Confluence账户的data_source_id。这个基本请求将为用户在Confluence实例中能够访问的每个空间返回根页面的列表。要进一步遍历用户的页面目录,可以使用相同的data_source_id和将parent_id设置为前面请求中的页面ID的额外请求来访问此端点。为了方便,响应列表中每个目录项目的has_children属性将标记哪些页面在设置为parent_id时将返回包含页面的非空列表。

🛠️ 用法

let dataSourceId = 987
let parentId = "parentId_example"
let listConfluencePagesResponse = try await carbonai.integrations.listConfluencePages(
    dataSourceId: dataSourceId,
    parentId: parentId
)

⚙️ 参数

data_source_id: Int
parent_id: String

🔄 返回

ListResponse

🌐 端点

/integrations/confluence/list POST

🔙 返回目录


carbonai.integrations.listDataSourceItems

列出数据源项目

🛠️ 用法

let dataSourceId = 987
let parentId = "parentId_example"
let filters = ListItemsFiltersNullable(
    externalIds: [
    "externalIds_example"
    ],
    ids: [
    123
    ],
    name: "name_example",
    rootFilesOnly: false
)
let pagination = Pagination(
    limit: 123,
    offset: 123
)
let listDataSourceItemsResponse = try await carbonai.integrations.listDataSourceItems(
    dataSourceId: dataSourceId,
    parentId: parentId,
    filters: filters,
    pagination: pagination
)

⚙️ 参数

data_source_id: Int
parent_id: String
pagination: Pagination

🔄 返回

ListDataSourceItemsResponse

🌐 端点

/integrations/items/list POST

🔙 返回目录


carbonai.integrations.listFolders

连接您的Outlook账户后,您可以使用此端点列出Outlook上所有的文件夹。这包括“收件箱”等系统文件夹和用户创建的文件夹。

🛠️ 用法

let dataSourceId = 987
let listFoldersResponse = try await carbonai.integrations.listFolders(
    dataSourceId: dataSourceId
)

⚙️ 参数

dataSourceId: Int

🌐 端点

/integrations/outlook/user_folders GET

🔙 返回目录


carbonai.integrations.listGitbookSpaces

连接您的Gitbook账户后,您可以使用此端点列出当前组织下所有的空间。

🛠️ 用法

let dataSourceId = 987
let listGitbookSpacesResponse = try await carbonai.integrations.listGitbookSpaces(
    dataSourceId: dataSourceId
)

⚙️ 参数

dataSourceId: Int

🌐 端点

/integrations/gitbook/spaces GET

🔙 返回目录


carbonai.integrations.listLabels

连接您的Gmail账户后,您可以使用此端点列出所有标签。用户创建的标签类型为“user”,Gmail的默认标签类型为“system”

🛠️ 用法

let dataSourceId = 987
let listLabelsResponse = try await carbonai.integrations.listLabels(
    dataSourceId: dataSourceId
)

⚙️ 参数

dataSourceId: Int

🌐 端点

/integrations/gmail/user_labels GET

🔙 返回目录


carbonai.integrations.listOutlookCategories

连接您的Outlook账户后,您可以使用此端点列出Outlook上所有的分类。我们目前支持最多列出250个分类。

🛠️ 用法

let dataSourceId = 987
let listOutlookCategoriesResponse = try await carbonai.integrations.listOutlookCategories(
    dataSourceId: dataSourceId
)

⚙️ 参数

dataSourceId: Int

🌐 端点

/integrations/outlook/user_categories GET

🔙 返回目录


carbonai.integrations.syncConfluence

在列出用户的Confluence账户中的页面后,选择的页面集合的ids和连接账户的data_source_id可以传递到此端点以将它们同步到Carbon。以下列出的附加参数可以用来关联数据到选择的页面或改变同步行为。

🛠️ 用法

let dataSourceId = 987
let ids = IdsProperty(
    
)
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGeneratorsNullable(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let maxItemsPerChunk = 987
let setPageAsBoundary = true
let requestId = "requestId_example"
let useOcr = true
let parsePdfTablesWithOcr = true
let syncConfluenceResponse = try await carbonai.integrations.syncConfluence(
    dataSourceId: dataSourceId,
    ids: ids,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    maxItemsPerChunk: maxItemsPerChunk,
    setPageAsBoundary: setPageAsBoundary,
    requestId: requestId,
    useOcr: useOcr,
    parsePdfTablesWithOcr: parsePdfTablesWithOcr
)

⚙️ 参数

data_source_id: Int
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型:EmbeddingGeneratorsNullable
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
max_items_per_chunkInt

每个代码片段中的对象数量。仅适用于csv、tsv、xlsx和json文件。

set_page_as_boundaryBool
request_id:String
use_ocr:Bool
parse_pdf_tables_with_ocrBool

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/confluence/sync POST

🔙 返回目录


carbonai.integrations.syncDataSourceItems

同步数据源项目

🛠️ 用法

let dataSourceId = 987
let syncDataSourceItemsResponse = try await carbonai.integrations.syncDataSourceItems(
    dataSourceId: dataSourceId
)

⚙️ 参数

data_source_id: Int

🔄 返回

OrganizationUserDataSourceAPI

🌐 端点

/integrations/items/sync POST

🔙 返回目录


carbonai.integrations.syncFiles

通过/integrations/items/sync和integrations/items/list列出文件和文件夹后,使用所选项目的外部ID作为此端点的ID以将它们同步到Carbon。Sharepoint项目需要额外的参数root_id,该参数标识文件或文件夹所在的驱动器,并存储在root_external_id中。该额外参数是可选的,如果省略它,则同步将假定项目存储在默认的“文档”驱动器中。

🛠️ 用法

let dataSourceId = 987
let ids = IdsProperty(
    
)
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGeneratorsNullable(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let maxItemsPerChunk = 987
let setPageAsBoundary = true
let requestId = "requestId_example"
let useOcr = true
let parsePdfTablesWithOcr = true
let syncFilesResponse = try await carbonai.integrations.syncFiles(
    dataSourceId: dataSourceId,
    ids: ids,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    maxItemsPerChunk: maxItemsPerChunk,
    setPageAsBoundary: setPageAsBoundary,
    requestId: requestId,
    useOcr: useOcr,
    parsePdfTablesWithOcr: parsePdfTablesWithOcr
)

⚙️ 参数

data_source_id: Int
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型:EmbeddingGeneratorsNullable
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
max_items_per_chunkInt

每个代码片段中的对象数量。仅适用于csv、tsv、xlsx和json文件。

set_page_as_boundaryBool
request_id:String
use_ocr:Bool
parse_pdf_tables_with_ocrBool

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/files/sync POST

🔙 返回目录


carbonai.integrations.syncGitbook

您可以使用此端点一次同步最多20个Gitbook空间。以下列出的附加参数可以用来关联数据到同步的页面或修改同步行为。

🛠️ 用法

let spaceIds = [
"inner_example"
]
let dataSourceId = 987
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let requestId = "requestId_example"
let syncGitbookResponse = try await carbonai.integrations.syncGitbook(
    spaceIds: spaceIds,
    dataSourceId: dataSourceId,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    requestId: requestId
)

⚙️ 参数

space_ids: 字符串数组
data_source_id: Int
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
request_id:String

🌐 端点

/integrations/gitbook/sync POST

🔙 返回目录


carbonai.integrations.syncGmail

成功连接您的Gmail账户后,您可以通过filters参数选择与我们的同步邮件。Filters是一个包含键值对的JSON对象。它还支持AND和OR操作。目前,我们支持以下列表中有限的一组键。

label:内建Gmail标签,例如“Important”或您创建的自定义标签。
afterbefore:YYYY/mm/dd格式的日期(例如2023/12/31)。获取某个日期之后或之前的电子邮件。您也可以将它们组合起来获取一定时期内的电子邮件。
is:可以有以下值 - starred,important,snoozed和unread

使用指定之外的关键字或值可能会导致意外行为。

一个带有筛选器的基本查询示例可以是

{
    "filters": {
            "key": "label",
            "value": "Test"
        }
}

这将列出所有标记为“Test”的电子邮件。

您可以使用以下方式使用AND和OR操作

{
    "filters": {
        "AND": [
            {
                "key": "after",
                "value": "2024/01/07"
            },
            {
                "OR": [
                    {
                        "key": "label",
                        "value": "Personal"
                    },
                    {
                        "key": "is",
                        "value": "starred"
                    }
                ]
            }
        ]
    }
}

这将返回1月7日之后标记为starred或具有“Personal”标签的电子邮件。请注意,这是我们支持的最深层嵌套,即在上面的示例中,您不能在OR筛选器内部添加更多的AND/OR筛选器。

🛠️ 用法

let filters = "TODO"
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let dataSourceId = 987
let requestId = "requestId_example"
let syncGmailResponse = try await carbonai.integrations.syncGmail(
    filters: filters,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    dataSourceId: dataSourceId,
    requestId: requestId
)

⚙️ 参数

filters: AnyCodable
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
data_source_id: Int
request_id:String

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/gmail/sync POST

🔙 返回目录


carbonai.integrations.syncOutlook

成功连接您的Outlook账户后,您可以使用filters和folder参数选择与我们的同步邮件。 "folder"应该是您想要从Outlook同步的文件夹。默认情况下,我们从收件箱文件夹获取消息。
Filters是一个包含键值对的JSON对象。它还支持AND和OR操作。目前,我们支持以下列表中有限的一组键。

category:您在Outlook中创建的自定义类别。
afterbefore:YYYY/mm/dd格式的日期(例如2023/12/31)。获取某个日期之后或之前的电子邮件。您也可以将它们组合起来获取一定时期内的电子邮件。
is:可以有以下值:flagged

一个带有筛选器的基本查询示例可以是

{
    "filters": {
            "key": "category",
            "value": "Test"
        }
}

这将列出具有“Test”类别的所有电子邮件。

在相同的查询中指定自定义文件夹

{
    "folder": "Folder Name",
    "filters": {
            "key": "category",
            "value": "Test"
        }
}

您可以使用以下方式使用AND和OR操作

{
    "filters": {
        "AND": [
            {
                "key": "after",
                "value": "2024/01/07"
            },
            {
                "OR": [
                    {
                        "key": "category",
                        "value": "Personal"
                    },
                    {
                        "key": "category",
                        "value": "Test"
                    },
                ]
            }
        ]
    }
}

这将返回1月7日之后具有Personal或Test类别的电子邮件。请注意,这是我们支持的最深层嵌套,即在上面的示例中,您不能在OR筛选器内部添加更多的AND/OR筛选器。

🛠️ 用法

let filters = "TODO"
let tags = "TODO"
let folder = "folder_example"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let dataSourceId = 987
let requestId = "requestId_example"
let syncOutlookResponse = try await carbonai.integrations.syncOutlook(
    filters: filters,
    tags: tags,
    folder: folder,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    dataSourceId: dataSourceId,
    requestId: requestId
)

⚙️ 参数

filters: AnyCodable
tags:AnyCodable
folder: 字符串
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
data_source_id: Int
request_id:String

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/outlook/sync POST

🔙 返回目录


carbonai.integrations.syncRssFeed

Rss Feed

🛠️ 用法

let url = "url_example"
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let requestId = "requestId_example"
let syncRssFeedResponse = try await carbonai.integrations.syncRssFeed(
    url: url,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    requestId: requestId
)

⚙️ 参数

urlString
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
request_id:String

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/rss_feed POST

🔙 返回目录


carbonai.integrations.syncS3Files

在通过/integrations/items/sync和integrations/items/list可选地加载项目后,使用bucket名称和object键作为该端点中的ID进行同步到Carbon。以下附加参数可以将数据与所选项目关联或修改同步行为

🛠️ 用法

let ids = [
S3GetFileInput(
    id: "id_example",
    bucket: "bucket_example"
)
]
let tags = "TODO"
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let embeddingModel = EmbeddingGenerators(
    
)
let generateSparseVectors = true
let prependFilenameToChunks = true
let maxItemsPerChunk = 987
let setPageAsBoundary = true
let dataSourceId = 987
let requestId = "requestId_example"
let useOcr = true
let parsePdfTablesWithOcr = true
let syncS3FilesResponse = try await carbonai.integrations.syncS3Files(
    ids: ids,
    tags: tags,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    embeddingModel: embeddingModel,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    maxItemsPerChunk: maxItemsPerChunk,
    setPageAsBoundary: setPageAsBoundary,
    dataSourceId: dataSourceId,
    requestId: requestId,
    useOcr: useOcr,
    parsePdfTablesWithOcr: parsePdfTablesWithOcr
)

⚙️ 参数

ids: [S3GetFileInput]
tags:AnyCodable
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
嵌入模型: EmbeddingGenerators
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
max_items_per_chunkInt

每个代码片段中的对象数量。仅适用于csv、tsv、xlsx和json文件。

set_page_as_boundaryBool
data_source_id: Int
request_id:String
use_ocr:Bool
parse_pdf_tables_with_ocrBool

🔄 返回

GenericSuccessResponse

🌐 端点

/integrations/s3/files POST

🔙 返回目录


carbonai.organizations.callGet

获取组织

🛠️ 用法

let callGetResponse = try await carbonai.organizations.callGet()

🔄 返回

OrganizationResponse

🌐 端点

/organization GET

🔙 返回目录


carbonai.users.callGet

用户端点

🛠️ 用法

let customerId = "customerId_example"
let callGetResponse = try await carbonai.users.callGet(
    customerId: customerId
)

⚙️ 参数

customer_id: 字符串

🔄 返回

UserResponse

🌐 端点

/user POST

🔙 返回目录


carbonai.users.delete

删除用户

🛠️ 用法

let customerIds = [
"inner_example"
]
let deleteResponse = try await carbonai.users.delete(
    customerIds: customerIds
)

⚙️ 参数

customer_ids: 字符串数组

🔄 返回

GenericSuccessResponse

🌐 端点

/delete_users POST

🔙 返回目录


carbonai.users.toggleUserFeatures

切换用户功能

🛠️ 用法

let configurationKeyName = "configurationKeyName_example"
let value = "TODO"
let toggleUserFeaturesResponse = try await carbonai.users.toggleUserFeatures(
    configurationKeyName: configurationKeyName,
    value: value
)

⚙️ 参数

configuration_key_name: 字符串
value: AnyCodable

🔄 返回

GenericSuccessResponse

🌐 端点

/modify_user_configuration POST

🔙 返回目录


carbonai.users.updateUsers

更新用户

🛠️ 用法

let customerIds = [
"inner_example"
]
let autoSyncEnabledSources = AutoSyncEnabledSourcesProperty(
    
)
let updateUsersResponse = try await carbonai.users.updateUsers(
    customerIds: customerIds,
    autoSyncEnabledSources: autoSyncEnabledSources
)

⚙️ 参数

customer_ids: 字符串数组

组织提供的用户ID列表

自动同步启用源:AutoSyncEnabledSourcesProperty

🔄 返回

GenericSuccessResponse

🌐 端点

/update_users POST

🔙 返回目录


carbonai.utilities.fetchUrls

从网页中提取所有URL。

参数:url (str): 网页的URL

返回值:FetchURLsResponse:一个响应对象,包含从网页中提取的URL列表和网页内容。

🛠️ 用法

let url = "url_example"
let fetchUrlsResponse = try await carbonai.utilities.fetchUrls(
    url: url
)

⚙️ 参数

urlString

🔄 返回

FetchURLsResponse

🌐 端点

/fetch_urls GET

🔙 返回目录


carbonai.utilities.fetchYoutubeTranscripts

从YouTube视频中获取英文字幕。

参数:id (str): YouTube视频的ID。raw (bool): 是否返回原始字幕。默认为False。

返回值:dict:一个字典,包含YouTube视频的字幕。

🛠️ 用法

let id = "id_example"
let raw = false
let fetchYoutubeTranscriptsResponse = try await carbonai.utilities.fetchYoutubeTranscripts(
    id: id,
    raw: raw
)

⚙️ 参数

id:String
raw:Bool

🔄 返回

YoutubeTranscriptResponse

🌐 端点

/fetch_youtube_transcript GET

🔙 返回目录


carbonai.utilities.processSitemap

从网站地图中检索所有URL,随后可以与我们的web_scrape端点一起使用。

🛠️ 用法

let url = "url_example"
let processSitemapResponse = try await carbonai.utilities.processSitemap(
    url: url
)

⚙️ 参数

urlString

🌐 端点

/process_sitemap GET

🔙 返回目录


carbonai.utilities.scrapeSitemap

从网站地图中提取所有URL,并对每个URL执行网络抓取。

参数:sitemap_url (str): 网站地图的URL

返回值:dict:一个响应对象,包含抓取作业的状态信息。

🛠️ 用法

let url = "url_example"
let tags = "TODO"
let maxPagesToScrape = 987
let chunkSize = 987
let chunkOverlap = 987
let skipEmbeddingGeneration = true
let enableAutoSync = true
let generateSparseVectors = true
let prependFilenameToChunks = true
let htmlTagsToSkip = [
"inner_example"
]
let cssClassesToSkip = [
"inner_example"
]
let cssSelectorsToSkip = [
"inner_example"
]
let embeddingModel = EmbeddingGenerators(
    
)
let scrapeSitemapResponse = try await carbonai.utilities.scrapeSitemap(
    url: url,
    tags: tags,
    maxPagesToScrape: maxPagesToScrape,
    chunkSize: chunkSize,
    chunkOverlap: chunkOverlap,
    skipEmbeddingGeneration: skipEmbeddingGeneration,
    enableAutoSync: enableAutoSync,
    generateSparseVectors: generateSparseVectors,
    prependFilenameToChunks: prependFilenameToChunks,
    htmlTagsToSkip: htmlTagsToSkip,
    cssClassesToSkip: cssClassesToSkip,
    cssSelectorsToSkip: cssSelectorsToSkip,
    embeddingModel: embeddingModel
)

⚙️ 参数

urlString
标签:[String: Tags1]
max_pages_to_scrape:Int
chunk_size: Int
chunk_overlap: Int
skip_embedding_generationBool
enable_auto_sync:Bool
generate_sparse_vectorsBool
prepend_filename_to_chunksBool
html_tags_to_skip:[String]
css_classes_to_skip:[String]
css_selectors_to_skip:[String]
嵌入模型: EmbeddingGenerators

🌐 端点

/scrape_sitemap POST

🔙 返回目录


carbonai.utilities.scrapeWeb

对指定的网页URL执行网络抓取。我们的网络爬虫完全兼容JavaScript,支持回溯深度,使您能够高效地从目标网站提取所有内容。

🛠️ 用法

let scrapeWebResponse = try await carbonai.utilities.scrapeWeb(
)

⚙️ 请求体

[WebscrapeRequest]

🌐 端点

/web_scrape POST

🔙 返回目录


carbonai.utilities.searchUrls

执行网络搜索并获取相关URL的列表。

例如,当您搜索“与mRNA相关的内容”时,您将收到以下链接列表:

- https://tomrenz.substack.com/p/mrna-and-why-it-matters

- https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/

- https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/

- https://joomi.substack.com/p/were-still-being-misled-about-how

随后,您可以提交这些链接到web_scrape端点,以获取各网页的内容。

参数:query (str): 要搜索的查询

返回值:FetchURLsResponse:一个响应对象,包含针对给定搜索查询的URL列表。

🛠️ 用法

let query = "query_example"
let searchUrlsResponse = try await carbonai.utilities.searchUrls(
    query: query
)

⚙️ 参数

查询:String

🔄 返回

FetchURLsResponse

🌐 端点

/search_urls GET

🔙 返回目录


carbonai.webhooks.addUrl

添加Webhook URL

🛠️ 用法

let url = "url_example"
let addUrlResponse = try await carbonai.webhooks.addUrl(
    url: url
)

⚙️ 参数

urlString

🔄 返回

Webhook

🌐 端点

/add_webhook POST

🔙 返回目录


carbonai.webhooks.deleteUrl

删除Webhook URL

🛠️ 用法

let webhookId = 987
let deleteUrlResponse = try await carbonai.webhooks.deleteUrl(
    webhookId: webhookId
)

⚙️ 参数

webhookId:Int

🔄 返回

GenericSuccessResponse

🌐 端点

/delete_webhook/{webhook_id} DELETE

🔙 返回目录


carbonai.webhooks.urls

Webhook URL

🛠️ 用法

let pagination = Pagination(
    limit: 123,
    offset: 123
)
let orderBy = WebhookOrderByColumns(
    
)
let orderDir = OrderDir(
    
)
let filters = WebhookFilters(
    ids: [
    123
    ]
)
let urlsResponse = try await carbonai.webhooks.urls(
    pagination: pagination,
    orderBy: orderBy,
    orderDir: orderDir,
    filters: filters
)

⚙️ 参数

pagination: Pagination
order_by:WebhookOrderByColumns
order_dir: OrderDir
filters:WebhookFilters

🔄 返回

WebhookQueryResponse

🌐 端点

/webhooks POST

🔙 返回目录


作者

此TypeScript包是由Konfig自动生成的