camel.toolkits 包

本页内容

camel.toolkits 包#

子模块#

camel.toolkits.base 模块#

class camel.toolkits.base.BaseToolkit(timeout: float | None = None)[来源]#

基类:object

工具包的基础类。

Parameters:

timeout (可选[float]) - 工具的超时时间。

class FastMCP(name: str | None = None, instructions: str | None = None, **settings: Any)#

基类:object

add_prompt(prompt: Prompt) None#

向服务器添加一个提示。

Parameters:

prompt – 要添加的Prompt实例

add_resource(resource: Resource) None#

向服务器添加资源。

Parameters:

resource – 要添加的Resource实例

add_tool(fn: Callable[[...], Any], name: str | None = None, description: str | None = None) None#

向服务器添加一个工具。

工具函数可以选择性地通过添加一个带有Context类型注解的参数来请求Context对象。有关示例,请参见@tool装饰器。

Parameters:
  • fn – 要注册为工具的函数

  • name – 工具的可选名称(默认为函数名)

  • description – 工具功能的可选描述

async call_tool(name: str, arguments: dict[str, Any]) Sequence[TextContent | ImageContent | EmbeddedResource]#

通过名称调用工具并传入参数。

get_context() Context[ServerSession, object]#

返回一个Context对象。请注意,该上下文仅在请求期间有效;在请求之外,大多数方法都会报错。

async get_prompt(name: str, arguments: dict[str, Any] | None = None) GetPromptResult#

通过名称和参数获取提示。

property instructions: str | None#
async list_prompts() list[Prompt]#

列出所有可用的提示词。

async list_resource_templates() list[ResourceTemplate]#
async list_resources() list[Resource]#

列出所有可用资源。

async list_tools() list[Tool]#

列出所有可用工具。

property name: str#
prompt(name: str | None = None, description: str | None = None) Callable[[Callable[[...], Any]], Callable[[...], Any]]#

用于注册提示的装饰器。

Args:

name: 提示的可选名称(默认为函数名) description: 提示功能的可选描述

Example:

@server.prompt() def analyze_table(table_name: str) -> list[Message]:

schema = read_table_schema(table_name) return [

{

“role”: “user”, “content”: f”分析这个架构:

{schema}”

}

]

@server.prompt() async def analyze_file(path: str) -> list[Message]:

content = await read_file(path) return [

{

“角色”: “用户”, “内容”: {

“类型”: “资源”, “资源”: {

“uri”: f”file://{path}”, “text”: 内容

}

}

}

]

async read_resource(uri: AnyUrl | str) Iterable[ReadResourceContents]#

通过URI读取资源。

resource(uri: str, *, name: str | None = None, description: str | None = None, mime_type: str | None = None) Callable[[Callable[[...], Any]], Callable[[...], Any]]#

装饰器,用于将函数注册为资源。

该函数将在读取资源时被调用以生成其内容。 函数可以返回: - str 表示文本内容 - bytes 表示二进制内容 - 其他类型将被转换为JSON

如果URI包含参数(例如"resource://{param}")或者函数具有参数,它将被注册为模板资源。

Parameters:
  • uri – 资源的URI(例如"resource://my-resource"或"resource://{param}")

  • name – 资源的可选名称

  • description – 资源的可选描述

  • mime_type – 资源的可选MIME类型

示例

@server.resource(“resource://my-resource”) def get_data() -> str:

return “Hello, world!”

@server.resource("resource://my-resource") async get_data() -> str:

data = await fetch_data() return f"你好,世界! {data}"

@server.resource(“resource://{city}/weather”) def get_weather(city: str) -> str:

返回 f"{city}的天气"

@server.resource(“resource://{city}/weather”) async def get_weather(city: str) -> str:

data = await fetch_weather(city) return f"城市{city}的天气: {data}"

run(transport: Literal['stdio', 'sse'] = 'stdio') None#

运行FastMCP服务器。请注意这是一个同步函数。

Parameters:

transport – 使用的传输协议("stdio" 或 "sse")

async run_sse_async() None#

使用SSE传输运行服务器。

async run_stdio_async() None#

使用stdio传输运行服务器。

sse_app() Starlette#

返回一个SSE服务器应用的实例。

tool(name: str | None = None, description: str | None = None) Callable[[Callable[[...], Any]], Callable[[...], Any]]#

用于注册工具的装饰器。

工具可以选择性地通过添加带有Context类型注解的参数来请求Context对象。该上下文提供了对MCP功能的访问,如日志记录、进度报告和资源访问。

Parameters:
  • name – 工具的可选名称(默认为函数名称)

  • description – 工具功能的可选描述

示例

@server.tool() def my_tool(x: int) -> str:

return str(x)

@server.tool() def tool_with_context(x: int, ctx: Context) -> str:

ctx.info(f"正在处理 {x}") return str(x)

@server.tool() async def async_tool(x: int, context: Context) -> str:

await context.report_progress(50, 100) return str(x)

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

mcp: FastMCP#
timeout: float | None = None#

camel.toolkits.code_execution 模块#

class camel.toolkits.code_execution.CodeExecutionToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于代码执行的工具包。

Parameters:
  • sandbox (str) - 用于执行代码的环境类型。 (默认: subprocess)

  • verbose (bool) - 是否打印代码执行的输出。 (默认: False)

  • unsafe_mode (bool) - 如果为True,解释器将通过eval()运行代码而不进行任何安全检查。(默认值: False)

  • import_white_list (可选[列表[字符串]]) – 允许导入的列表。 (默认: None)

  • require_confirm (bool) – 是否在执行代码前需要确认。 (默认: False)

execute_code(code: str) str[来源]#

执行给定的代码片段。

Parameters:

code (str) – 输入到Code Interpreter工具调用的代码。

Returns:

来自Code Interpreter工具调用的文本输出。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

camel.toolkits.dalle_toolkit 模块#

class camel.toolkits.dalle_toolkit.DalleToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示使用OpenAI的DALL-E模型进行图像生成的工具包类。

base64_to_image(base64_string: str) Image | None[来源]#

将base64编码的字符串转换为PIL Image对象。

Parameters:

base64_string (str) – 图像的base64编码字符串。

Returns:

PIL图像对象,如果转换失败则为None

失败。

Return type:

可选[Image.Image]

get_dalle_img(prompt: str, image_dir: str = 'img') str[来源]#
Generate an image using OpenAI’s DALL-E model.

生成的图像已保存到指定目录。

Parameters:
  • prompt (str) - 用于生成图像的文本提示。

  • image_dir (str) – 保存生成图片的目录。默认为'img'。

Returns:

保存图像的路径。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

image_path_to_base64(image_path: str) str[来源]#

将图像的文件路径转换为Base64编码字符串。

Parameters:

image_path (str) – 图像文件的路径。

Returns:

一个Base64编码的字符串,表示图像的内容

文件。

Return type:

字符串

image_to_base64(image: Image) str[来源]#

将图像转换为base64编码的字符串。

该函数接收一个图像对象作为输入,将图像编码为PNG格式的base64字符串并返回。如果编码过程中遇到错误,它会打印错误信息并返回None。

Parameters:

image – 要编码的图像对象,支持任何可以保存为PNG格式的图像格式。

Returns:

图像的base64编码字符串。

Return type:

字符串

camel.toolkits.github_toolkit 模块#

class camel.toolkits.github_toolkit.GithubToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于与GitHub仓库交互的工具包的类。

This class provides methods for retrieving open issues, retrieving

具体问题,以及在GitHub仓库中创建拉取请求。

Parameters:
  • repo_name (str) - GitHub仓库的名称。

  • access_token (str, optional) – 用于GitHub身份验证的访问令牌。如果未提供,将使用get_github_access_token方法获取。

create_pull_request(file_path: str, new_content: str, pr_title: str, body: str, branch_name: str) str[来源]#

创建一个拉取请求。

此函数在指定仓库中创建一个拉取请求,该请求将特定路径下的文件内容更新为新内容。拉取请求描述中包含问题标题和编号的相关信息。

Parameters:
  • file_path (str) – 仓库中待更新文件的路径。

  • new_content (str) - 指定文件的新内容。

  • pr_title (str) - 这个pull request所解决问题的标题。

  • body (str) – 拉取请求的提交信息。

  • branch_name (str) - 要创建并从中提交拉取请求的分支名称。

Returns:

关于是否成功创建拉取请求的格式化报告

成功与否。

Return type:

字符串

get_all_file_paths(path: str = '') List[str][来源]#

递归获取GitHub仓库中的所有文件路径。

Parameters:

path (str) – 开始遍历的仓库路径。 空字符串表示从根目录开始。 (默认值: :obj: “”)

Returns:

指定目录内的文件路径列表

结构。

Return type:

List[str]

get_github_access_token() str[来源]#

从环境变量中获取GitHub访问令牌。

Returns:

包含GitHub访问令牌的字符串。

Return type:

字符串

Raises:

ValueError – 如果在环境变量中未找到API密钥或密钥。

get_issue_content(issue_number: int) str[来源]#

根据编号获取特定问题的内容。

Parameters:

issue_number (int) – 要获取的问题编号。

Returns:

问题内容详情。

Return type:

字符串

get_issue_list(state: Literal['open', 'closed', 'all'] = 'all') List[Dict[str, object]][来源]#

从GitHub仓库获取所有问题。

Parameters:

state (Literal["open", "closed", "all"]) – 要获取的拉取请求的状态。(默认: :obj: all) 选项包括: - "open": 仅获取打开的拉取请求。 - "closed": 仅获取已关闭的拉取请求。 - "all": 获取所有拉取请求,无论其状态如何。

Returns:

一个字典列表,其中每个

字典包含问题编号和标题。

Return type:

列表[字典[str, 对象]]

get_pull_request_code(pr_number: int) List[Dict[str, str]][来源]#

获取特定拉取请求的代码变更。

Parameters:

pr_number (int) – 要获取的拉取请求编号。

Returns:

一个字典列表,其中每个字典

包含文件名和对应的代码变更(补丁)。

Return type:

List[Dict[str, str]]

get_pull_request_comments(pr_number: int) List[Dict[str, str]][来源]#

获取特定拉取请求中的评论。

Parameters:

pr_number (int) – 要获取的拉取请求编号。

Returns:

一个字典列表,其中每个字典

包含用户ID和评论内容。

Return type:

List[Dict[str, str]]

get_pull_request_list(state: Literal['open', 'closed', 'all'] = 'all') List[Dict[str, object]][来源]#

从GitHub仓库获取所有拉取请求。

Parameters:

state (Literal["open", "closed", "all"]) – 要获取的拉取请求的状态。(默认: :obj: all) 可选值为: - "open": 仅获取打开的拉取请求。 - "closed": 仅获取已关闭的拉取请求。 - "all": 获取所有拉取请求,无论状态如何。

Returns:

一个字典列表,其中每个字典包含

拉取请求编号和标题。

Return type:

列表

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

retrieve_file_content(file_path: str) str[来源]#

从GitHub仓库检索文件内容。

Parameters:

file_path (str) – 要检索的文件路径。

Returns:

文件的解码内容。

Return type:

字符串

camel.toolkits.google_maps_toolkit 模块#

class camel.toolkits.google_maps_toolkit.GoogleMapsToolkit(timeout: float | None = None)[来源]#

基类: BaseToolkit

一个表示与GoogleMaps API交互工具包的类。 该类提供了使用Google Maps API验证地址、获取海拔高度和获取时区信息的方法。

get_address_description(address: str | List[str], region_code: str | None = None, locality: str | None = None) str[来源]#

通过Google Maps API验证地址,返回描述性摘要。使用Google Maps API验证地址,返回的摘要包括地址补全信息、格式化地址、位置坐标以及适用于给定地址的元数据类型。

Parameters:
  • address (Union[str, List[str]]) – 要验证的地址或组件。可以是单个字符串或表示不同部分的列表。

  • region_code (str, optional) – 用于地区限制的国家代码,有助于缩小结果范围。(默认: None)

  • locality (str, optional) – 将验证限制在特定地区,例如"Mountain View"。(默认值: None)

Returns:

地址验证结果摘要,包括

地址补全信息、格式化地址、地理坐标(纬度和经度)以及该地址对应的元数据类型。

Return type:

字符串

get_elevation(lat: float, lng: float) str[来源]#

获取给定纬度和经度的高程数据。 使用Google Maps API获取指定纬度和经度的高程数据。它能优雅地处理异常情况,并返回高程描述,包括以米为单位的值和数据分辨率。

Parameters:
  • lat (float) – 要查询位置的纬度。

  • lng (float) – 要查询位置的经度。

Returns:

指定位置的海拔高度描述,

包括以米为单位的海拔高度和数据分辨率。如果 无法获取海拔数据,则会返回一条提示信息。

Return type:

字符串

get_timezone(lat: float, lng: float) str[来源]#

获取给定纬度和经度的时区信息。 该函数使用Google Maps Timezone API来获取指定纬度和经度的时区数据。它返回时区的自然语言描述,包括时区ID、名称、标准时间偏移量、夏令时偏移量以及与协调世界时(UTC)的总偏移量。

Parameters:
  • lat (float) – 要查询位置的纬度。

  • lng (float) – 要查询位置的经度。

Returns:

描述时区信息的字符串,

包括时区ID和名称、标准时间偏移量、夏令时偏移量以及与UTC的总偏移量。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

camel.toolkits.google_maps_toolkit.handle_googlemaps_exceptions(func: Callable[[...], Any]) Callable[[...], Any][来源]#

用于捕获和处理Google Maps API调用引发的异常的装饰器。

Parameters:

func (Callable) – 将被装饰器包装的函数。

Returns:

一个封装函数,用于调用被封装函数并

处理异常。

Return type:

可调用

camel.toolkits.linkedin_toolkit 模块#

class camel.toolkits.linkedin_toolkit.LinkedInToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示LinkedIn操作工具包的类。

该类提供了创建帖子、删除帖子以及获取认证用户个人资料信息的方法。

create_post(text: str) dict[来源]#

为认证用户在LinkedIn上创建一篇帖子。

Parameters:

text (str) – 要创建的帖子内容。

Returns:

一个包含帖子ID和内容的字典

如果帖子创建失败,这些值将为None。

Return type:

字典

Raises:

异常 - 如果由于LinkedIn API返回错误响应导致帖子创建失败。

delete_post(post_id: str) str[来源]#

删除授权用户指定ID的LinkedIn帖子。

此函数向LinkedIn API发送DELETE请求以删除指定ID的帖子。在发送请求之前,它会提示用户确认删除操作。

Parameters:

post_id (str) – 要删除的帖子的ID。

Returns:

一条指示删除结果的消息。如果

删除成功,该消息包含被删除帖子的ID。如果删除未成功,该消息包含一条错误信息。

Return type:

字符串

Reference:

https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/ugc-post-api

get_profile(include_id: bool = False) dict[来源]#

获取已认证用户的LinkedIn个人资料信息。

该函数向LinkedIn API发送GET请求以获取认证用户的个人资料信息。可选地,它还会返回用户的LinkedIn ID。

Parameters:

include_id (bool) – 是否在响应中包含LinkedIn个人资料ID。

Returns:

包含用户LinkedIn个人资料的字典

信息。如果include_id为True,该字典还将包含个人资料ID。

Return type:

字典

Raises:

异常 - 如果由于LinkedIn API返回错误响应导致个人资料获取失败。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

camel.toolkits.math_toolkit 模块#

class camel.toolkits.math_toolkit.MathToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示数学运算工具包的类。

该类提供基本数学运算方法,如加法、减法、乘法、除法及四舍五入。

add(a: float, b: float) float[来源]#

将两个数字相加。

Parameters:
  • a (float) – 要相加的第一个数字。

  • b (float) - 要相加的第二个数字。

Returns:

两个数字的总和。

Return type:

浮点数

divide(a: float, b: float, decimal_places: int = 2) float[来源]#

将两个数相除。

Parameters:
  • a (float) – 除法运算中的被除数。

  • b (float) - 除法运算中的除数。

  • decimal_places (int, optional) – 要四舍五入的小数位数。默认为2。

Returns:

a 除以 b 的结果。

Return type:

浮点数

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

multiply(a: float, b: float, decimal_places: int = 2) float[来源]#

将两个数字相乘。

Parameters:
  • a (float) – 乘法运算中的乘数。

  • b (float) – 乘法运算中的被乘数。

  • decimal_places (int, optional) – 要四舍五入的小数位数。默认为2。

Returns:

两个数字的乘积。

Return type:

浮点数

round(a: float, decimal_places: int = 0) float[来源]#

将数字四舍五入到指定的小数位数。

Parameters:
  • a (float) – 要四舍五入的数字。

  • decimal_places (int, optional) – 要四舍五入到的小数位数。默认为0。

Returns:

四舍五入后的数字。

Return type:

浮点数

sub(a: float, b: float) float[来源]#

对两个数字进行减法运算。

Parameters:
  • a (float) – 减法中的被减数。

  • b (float) – 减法中的减数。

Returns:

a 中减去 b 的结果。

Return type:

浮点数

camel.toolkits.open_api_toolkit 模块#

class camel.toolkits.open_api_toolkit.OpenAPIToolkit[来源]#

基类:object

一个表示用于与OpenAPI API交互的工具包的类。

该类提供了基于OpenAPI规范与API交互的方法。它会为OpenAPI规范中定义的每个API操作动态生成函数,允许用户向API端点发起HTTP请求。

apinames_filepaths_to_funs_schemas(apinames_filepaths: List[Tuple[str, str]]) Tuple[List[Callable], List[Dict[str, Any]]][来源]#

将多个OpenAPI规范中的函数和模式组合起来,使用API名称作为键。

该函数遍历API名称和OpenAPI规范文件路径的元组,解析每个规范以生成可调用函数和模式字典,所有内容按API名称组织。

参数: apinames_filepaths (List[Tuple[str, str]]): 一个元组列表,其中

每个元组包含: - 第一个元素是API名称(字符串)。 - 第二个元素是API的OpenAPI规范文件的路径(字符串)。

第二个元素。

Returns:

Tuple[List[Callable], List[Dict[str, Any]]]:: 可调用对象之一

用于API操作的函数集合,以及另一个表示规范中模式的字典集合。

generate_apinames_filepaths() List[Tuple[str, str]][来源]#

生成一个包含API名称及其对应文件路径的元组列表。

该函数遍历OpenAPIName枚举,为每个API的OpenAPI规范文件构建文件路径,并将API名称及其文件路径的元组追加到列表中。文件路径是相对于与脚本同目录下的'open_api_specs'目录的。

Returns:

一个元组列表,其中每个元组包含

两个元素。每个元组的第一个元素是表示API名称的字符串,第二个元素是指定该API的OpenAPI规范文件路径的字符串。

Return type:

列表[元组[字符串, 字符串]]

generate_openapi_funcs(api_name: str, openapi_spec: Dict[str, Any]) List[Callable][来源]#

根据OpenAPI规范生成Python函数列表。

该函数动态生成一个可调用函数的列表,这些函数代表OpenAPI规范文档中定义的API操作。每个函数设计用于执行规范中定义的对应API操作(如GET、POST)的HTTP请求。这些函数通过openapi_function_decorator装饰器进行修饰,该装饰器配置它们以构建并发送带有适当参数、头部和正文内容的HTTP请求。

Parameters:
  • api_name (str) – API的名称,用于为生成的函数名称添加前缀。

  • openapi_spec (Dict[str, Any]) - 作为字典的OpenAPI规范。

Returns:

包含生成函数的列表。每个

函数在被调用时,将根据OpenAPI规范中定义的对应API操作发起HTTP请求。

Return type:

列表[可调用对象]

Raises:

ValueError – 如果OpenAPI规范不包含服务器信息,这些信息是确定API请求基础URL所必需的。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

openapi_function_decorator(api_name: str, base_url: str, path: str, method: str, openapi_security: List[Dict[str, Any]], sec_schemas: Dict[str, Dict[str, Any]], operation: Dict[str, Any]) Callable[来源]#

装饰一个函数以基于OpenAPI规范详情发起HTTP请求。

该装饰器根据提供的OpenAPI操作规范、安全要求和参数,动态构建并执行API请求。它支持使用apiKey类型安全方案保护的操作,并自动从环境变量中注入必要的API密钥。同时支持pathqueryheadercookie中的参数。

Parameters:
  • api_name (str) - API的名称,用于从配置中检索API密钥名称和URL。

  • base_url (str) - API的基础URL。

  • path (str) – API端点的路径,相对于基础URL。

  • method (str) – HTTP请求的方法(例如:'get'、'post')。

  • openapi_security (List[Dict[str, Any]]) – OpenAPI规范中定义的全局安全配置。

  • sec_schemas (Dict[str, Dict[str, Any]]) - 详细的安全方案。

  • operation (Dict[str, Any]) – 一个包含OpenAPI操作详情的字典,包括参数和请求体定义。

Returns:

一个装饰器,当应用于函数时,能够

使函数根据提供的OpenAPI操作细节发起HTTP请求。

Return type:

可调用

Raises:
  • TypeError - 如果安全要求包含不受支持的类型。

  • ValueError - 如果环境变量中缺少必需的API密钥,或者请求正文的内容类型不受支持。

openapi_spec_to_openai_schemas(api_name: str, openapi_spec: Dict[str, Any]) List[Dict[str, Any]][来源]#

将OpenAPI规范转换为OpenAI模式格式。

该函数遍历OpenAPI规范中定义的路径和操作,过滤掉已弃用的操作。对于每个操作,它会构建一个适合OpenAI格式的模式,包括操作元数据如函数名称、描述、参数和请求体。如果操作缺少描述或摘要,则会引发ValueError。

Parameters:
  • api_name (str) – API的名称,用于为生成的函数名称添加前缀。

  • openapi_spec (Dict[str, Any]) – 以字典形式表示的OpenAPI规范。

Returns:

一个字典列表,每个字典代表一个

符合OpenAI模式格式的函数,包含有关函数名称、描述和参数的详细信息。

Return type:

List[Dict[str, Any]]

Raises:

ValueError – 如果OpenAPI规范中的操作没有描述或摘要。

注意

该函数假设OpenAPI规范遵循3.0+格式。

Reference:

https://swagger.io/specification/

parse_openapi_file(openapi_spec_path: str) Dict[str, Any] | None[来源]#

加载并解析一个OpenAPI规范文件。

该函数利用prance.ResolvingParser来解析并解析给定的OpenAPI规范文件,返回解析后的OpenAPI规范作为字典。

Parameters:

openapi_spec_path (str) – OpenAPI规范的文件路径或URL。

Returns:

解析后的OpenAPI规范

以字典形式呈现。如果未安装该包则为None

Return type:

可选[字典[str, 任意类型]]

camel.toolkits.openai_function 模块#

class camel.toolkits.function_tool.FunctionTool(func: Callable, openai_tool_schema: Dict[str, Any] | None = None, synthesize_schema: bool | None = False, synthesize_schema_model: BaseModelBackend | None = None, synthesize_schema_max_retries: int = 2, synthesize_output: bool | None = False, synthesize_output_model: BaseModelBackend | None = None, synthesize_output_format: Type[BaseModel] | None = None)[来源]#

基类:object

OpenAI聊天模型可调用函数的抽象。参见 https://platform.openai.com/docs/api-reference/chat/create

默认情况下,工具模式将从函数中解析,或者您可以提供用户定义的工具模式来覆盖。

Parameters:
  • func (Callable) – 要调用的函数。默认情况下,工具模式会从函数签名和文档字符串中解析。

  • openai_tool_schema (可选[字典[字符串, 任意类型]], 可选) – 用户自定义的OpenAI工具模式,用于覆盖默认结果。 (默认值: None)

  • synthesize_schema (Optional[bool], optional) - 是否启用模式助手模型,在验证失败或未提供有效模式时自动合成模式。(默认: False)

  • synthesize_schema_model (Optional[BaseModelBackend], optional) – 一个 用于合成模式的辅助模型(例如LLM模型),当synthesize_schema启用且未提供有效模式时使用。(默认值:None

  • synthesize_schema_max_retries (int, optional) – 当先前尝试失败时,使用模式助手模型进行模式合成的最大重试次数。(默认值: 2)

  • synthesize_output (Optional[bool], optional) - 用于启用合成输出模式的标志,其中输出将基于函数的执行结果进行合成。(默认值: False)

  • synthesize_output_model (可选[BaseModelBackend], 可选) – 用于合成模式中输出合成的模型。 (默认值: None)

  • synthesize_output_format (Optional[Type[BaseModel]], optional) – 合成输出时的响应格式。(默认: None)

async async_call(*args: Any, **kwargs: Any) Any[来源]#
get_function_description() str[来源]#

从OpenAI工具模式中获取函数的描述。

Returns:

该函数的描述。

Return type:

字符串

get_function_name() str[来源]#

从OpenAI工具模式中获取函数名称。

Returns:

函数名称。

Return type:

字符串

get_openai_function_schema() Dict[str, Any][来源]#

从OpenAI工具模式中获取函数的模式。

该方法提取并返回与此函数关联的OpenAI工具模式中特定于函数的部分。

Returns:

OpenAI工具中函数的模式

schema.

Return type:

字典[字符串, 任意类型]

get_openai_tool_schema() Dict[str, Any][来源]#

获取此函数的OpenAI工具模式。

该方法返回与此函数关联的OpenAI工具模式,在验证其符合OpenAI规范后。

Returns:

此函数的OpenAI工具模式。

Return type:

字典[字符串, 任意类型]

get_parameter(param_name: str) Dict[str, Any][来源]#

从函数模式中获取特定参数的架构。

Parameters:

param_name (str) – 要获取模式的参数名称。

Returns:

指定参数的架构。

Return type:

字典[字符串, 任意类型]

get_paramter_description(param_name: str) str[来源]#

从函数模式中获取特定参数的描述。

Parameters:

param_name (str) – 要获取描述的参数的名称。

Returns:

指定参数的描述。

Return type:

字符串

property is_async: bool#
property parameters: Dict[str, Any]#

获取属性parameters的Getter方法。

Returns:

包含以下信息的字典

该函数的参数。

Return type:

字典[字符串, 任意类型]

set_function_description(description: str) None[来源]#

设置OpenAI工具模式中函数的描述。

Parameters:

描述 (str) – 该函数的描述信息。

set_function_name(name: str) None[来源]#

设置OpenAI工具模式中函数的名称。

Parameters:

name (str) – 要设置的函数名称。

set_openai_function_schema(openai_function_schema: Dict[str, Any]) None[来源]#

在OpenAI工具模式中设置函数的模式。

Parameters:

openai_function_schema (Dict[str, Any]) – 要在OpenAI工具模式中设置的函数模式。

set_openai_tool_schema(schema: Dict[str, Any]) None[来源]#

设置此函数的OpenAI工具模式。

允许为该函数设置自定义的OpenAI工具架构。

Parameters:

schema (Dict[str, Any]) – 要设置的OpenAI工具模式。

set_parameter(param_name: str, value: Dict[str, Any])[来源]#

设置函数模式中特定参数的架构。

Parameters:
  • param_name (str) - 要为其设置模式的参数名称。

  • value (Dict[str, Any]) – 要为参数设置的schema。

set_paramter_description(param_name: str, description: str) None[来源]#

为函数模式中的特定参数设置描述。

Parameters:
  • param_name (str) – 要设置描述的参数名称。

  • description (str) - 参数的描述信息。

synthesize_execution_output(args: tuple[Any, ...] | None = None, kwargs: Dict[str, Any] | None = None) Any[来源]#

根据提供的位置参数和关键字参数,合成函数的输出。

Parameters:
  • args (可选[tuple]) – 在合成过程中传递给函数的位置参数。(默认值: None)

  • kwargs (可选[Dict[str, Any]]) – 在合成过程中传递给函数的关键字参数。(默认值: None)

Returns:

函数执行生成的合成输出。如果未提供

合成模型,则会记录警告信息。

Return type:

任何

synthesize_openai_tool_schema(max_retries: int | None = None) Dict[str, Any][来源]#

为指定函数合成一个OpenAI工具模式。

该方法使用语言模型(LLM)为指定函数合成OpenAI工具模式,首先生成文档字符串,然后基于函数源代码创建模式。如果失败,模式合成和验证过程最多会重试max_retries次。

Parameters:

max_retries (Optional[int], optional) – 如果模式合成和验证过程失败时的最大重试次数。(默认值: None)

Returns:

该函数的OpenAI工具合成模式。

Return type:

字典[字符串, 任意类型]

Raises:

ValueError – 如果模式合成或验证在达到最大重试次数后仍然失败,将引发ValueError错误,提示需要手动设置模式。

static validate_openai_tool_schema(openai_tool_schema: Dict[str, Any]) None[来源]#

验证OpenAI工具模式是否符合 ToolAssistantToolsFunction。 此函数检查提供的openai_tool_schema是否遵循 OpenAI的ToolAssistantToolsFunction所需规范。它确保 函数描述和参数根据JSON模式规范正确格式化。 :param openai_tool_schema: 要验证的OpenAI工具模式

验证。

Raises:
  • ValidationError - 如果模式不符合规范时抛出。

  • SchemaError - 如果参数不符合JSON Schema引用规范。

camel.toolkits.function_tool.generate_docstring(code: str, model: BaseModelBackend | None = None) str[来源]#

使用LLM为给定函数代码生成文档字符串。

该函数利用语言模型为提供的Python函数生成符合PEP 8/PEP 257规范的文档字符串。 如果未提供模型,则默认使用gpt-4o-mini。

Parameters:
  • code (str) – 函数的源代码。

  • model (可选[BaseModelBackend]) – 一个可选的语言模型后端实例。如果未提供,则默认使用gpt-4o-mini。

Returns:

生成的文档字符串。

Return type:

字符串

camel.toolkits.function_tool.get_openai_function_schema(func: Callable) Dict[str, Any][来源]#

根据OpenAI函数的签名生成一个模式字典。

此函数已弃用,未来版本将由 get_openai_tool_schema() 替代。它会解析 函数的参数和文档字符串来构建类似JSON模式的 字典。

Parameters:

func (可调用对象) – 用于生成模式( schema )的OpenAI函数。

Returns:

表示该函数JSON模式的字典

包括其名称、描述和参数规范。

Return type:

字典[字符串, 任意类型]

camel.toolkits.function_tool.get_openai_tool_schema(func: Callable) Dict[str, Any][来源]#

根据给定的Python函数生成OpenAI JSON模式。

该函数根据提供的Python函数创建一个与OpenAI API规范兼容的模式。它会处理函数的参数、类型和文档字符串,并相应地构建模式。

注意

  • func中的每个参数都必须有类型注解;否则,它将被视为'Any'。

  • 可变参数(*args)和关键字参数(**kwargs)不受支持,将被忽略。

  • func的文档字符串中应提供功能描述,包括简要和详细的解释。

  • func的所有参数都必须在其文档字符串中描述。

  • 支持的文档字符串风格:ReST、Google、Numpydoc和Epydoc。

Parameters:

func (Callable) – 将被转换为OpenAI JSON模式的Python函数。

Returns:

表示所提供函数的OpenAI JSON模式的字典

Return type:

字典[字符串, 任意类型]

camel.toolkits.function_tool.sanitize_and_enforce_required(parameters_dict)[来源]#

清理并更新函数模式以符合OpenAI的要求: - 从参数模式中移除无效的'default'字段。 - 确保所有字段或函数参数都被标记为必填项。

Parameters:

parameters_dict (dict) - 表示函数模式的字典。

Returns:

更新后的字典已移除无效默认值,并且所有

字段均设为必填项。

Return type:

字典

camel.toolkits.reddit_toolkit 模块#

class camel.toolkits.reddit_toolkit.RedditToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个代表Reddit操作工具包的类。

该工具包提供了与Reddit API交互的方法,允许用户收集热门帖子、对评论进行情感分析,并跟踪多个子版块中的关键词讨论。

retries#

API请求失败时的重试次数。

Type:

int

delay#

重试之间的延迟时间(以秒为单位)。

Type:

浮点数

reddit#

Reddit客户端的一个实例。

Type:

Reddit

collect_top_posts(subreddit_name: str, post_limit: int = 5, comment_limit: int = 5) List[Dict[str, Any]] | str[来源]#

收集指定子版块的热门帖子及其评论。

Parameters:
  • subreddit_name (str) – 要从中收集帖子的subreddit名称。

  • post_limit (int) – 要收集的热门帖子最大数量。默认为5

  • comment_limit (int) – 每篇帖子收集的热门评论的最大数量。默认为5

Returns:

一个字典列表,每个

包含帖子标题及其热门评论(如果成功)。 如果凭据未设置则显示字符串警告。

Return type:

Union[List[Dict[str, Any]], str]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表,用于

工具包方法。

Return type:

列表[FunctionTool]

perform_sentiment_analysis(data: List[Dict[str, Any]]) List[Dict[str, Any]][来源]#

对从Reddit帖子收集的评论进行情感分析。

Parameters:

data (List[Dict[str, Any]]) – 包含Reddit帖子和评论数据的字典列表。

Returns:

原始数据添加了每条评论的‘情感

评分’。

Return type:

List[Dict[str, Any]]

track_keyword_discussions(subreddits: List[str], keywords: List[str], post_limit: int = 10, comment_limit: int = 10, sentiment_analysis: bool = False) List[Dict[str, Any]] | str[来源]#

追踪指定子版块中关于特定关键词的讨论。

Parameters:
  • subreddits (List[str]) – 要在其中搜索的subreddit名称列表。

  • keywords (List[str]) – 用于跟踪子论坛讨论中的关键词列表

  • post_limit (int) – 每个subreddit收集的热门帖子最大数量。默认为10

  • comment_limit (int) – 每篇帖子收集的热门评论的最大数量。默认为 10

  • sentiment_analysis (bool) – 如果为True,将对评论进行情感分析。默认为False

Returns:

字典列表

包含子版块名称、帖子标题、评论内容以及每个包含指定关键词评论的点赞数(如果成功)。如果凭据未设置则返回字符串警告。

Return type:

Union[List[Dict[str, Any]], str]

camel.toolkits.retrieval_toolkit 模块#

class camel.toolkits.retrieval_toolkit.RetrievalToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示信息检索工具包的类。

该类提供了基于指定查询从本地向量存储系统中检索信息的方法。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

information_retrieval(query: str, contents: str | List[str], top_k: int = 1, similarity_threshold: float = 0.7) str[来源]#

从本地向量存储中根据指定查询检索信息。该函数连接到本地向量存储系统,并通过处理输入查询来获取相关信息。当问题的答案需要依赖外部知识源时,使用此函数至关重要。

Parameters:
  • query (str) – 需要回答的问题或查询。

  • contents (Union[str, List[str]]) - 本地文件路径、远程URL或字符串内容。

  • top_k (int, optional) – 在检索过程中返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS

  • similarity_threshold (float, optional) – 用于过滤结果的相似度阈值。默认为 DEFAULT_SIMILARITY_THRESHOLD

Returns:

查询返回的信息,经过汇总

并格式化为字符串。

Return type:

字符串

示例

# 获取关于CAMEL AI的信息。 information_retrieval(query = "如何为CAMEL AI做贡献?",

contents=”camel-ai/camel”)

camel.toolkits.search_toolkit 模块#

class camel.toolkits.search_toolkit.SearchToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个代表网页搜索工具包的类。

该类提供了使用搜索引擎(如Google、DuckDuckGo、Wikipedia、Wolfram Alpha和Brave)在网络上搜索信息的方法。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

query_wolfram_alpha(query: str, is_detailed: bool = False) str | Dict[str, Any][来源]#

查询Wolfram|Alpha并返回结果。Wolfram|Alpha是由Wolfram Research开发的答案引擎。它作为一项在线服务提供,通过从外部来源数据计算答案来回答事实查询。

Parameters:
  • query (str) – 要发送给Wolfram Alpha的查询语句。

  • is_detailed (bool) - 是否在结果中包含包括逐步信息在内的额外细节。 (默认: False)

Returns:

Wolfram Alpha返回的结果。

如果is_detailed为False则返回字符串,否则返回包含详细信息的字典。

Return type:

Union[str, Dict[str, Any]]

search_baidu(query: str, max_results: int = 5) Dict[str, Any][来源]#

通过网页抓取方式使用百度搜索获取相关搜索结果。该方法查询百度的搜索引擎并提取包括标题、描述和URL在内的搜索结果。

Parameters:
  • query (str) – 要提交给百度的搜索查询字符串。

  • max_results (int) – 返回结果的最大数量。 (默认值: 5)

Returns:

包含搜索结果或错误的字典

消息。

Return type:

字典[字符串, 任意类型]

search_bing(query: str, max_results: int = 5) Dict[str, Any][来源]#

使用Bing搜索引擎搜索给定查询的信息。

该函数通过网页抓取查询中文版必应搜索引擎(cn.bing.com),获取相关搜索结果。它会提取包括标题、摘要和URL在内的搜索结果。当查询内容为中文或需要中文搜索结果时,此函数特别有用。

Parameters:
  • query (str) – 要提交给Bing的搜索查询字符串。对于中文查询或需要中文结果时效果最佳。

  • max_results (int) – 要返回的最大结果数量。 (默认: 5)

Returns:

包含以下任一内容的字典:
  • 'results': 字典列表,每个字典包含:
    • 'result_id': 结果的索引。

    • 'snippet': 搜索结果的简要描述。

    • 'title': 搜索结果的标题。

    • 'link': 搜索结果的URL。

  • 或 'error': 如果出错时的错误信息。

Return type:

字典 ([字符串, 任意类型])

search_bocha(query: str, freshness: str = 'noLimit', summary: bool = False, count: int = 10, page: int = 1) Dict[str, Any][来源]#

查询Bocha AI搜索API并返回搜索结果。

Parameters:
  • query (str) – 搜索查询语句。

  • freshness (str) – 用于筛选搜索结果的时间范围。默认为"noLimit"。可选选项包括: - 'noLimit': 无限制(默认)。 - 'oneDay': 过去一天。 - 'oneWeek': 过去一周。 - 'oneMonth': 过去一个月。 - 'oneYear': 过去一年。

  • summary (bool) – 是否在结果中包含文本摘要。默认为False。

  • count (int) – 要返回的结果数量(1-50)。默认值为10。

  • page (int) – 结果的页码。默认为1。

Returns:

包含搜索结果的字典,包括

网页、图片和视频(如果有的话)。该结构遵循Bocha AI搜索API响应格式。

Return type:

字典[字符串, 任意类型]

search_brave(q: str, country: str = 'US', search_lang: str = 'en', ui_lang: str = 'en-US', count: int = 20, offset: int = 0, safesearch: str = 'moderate', freshness: str | None = None, text_decorations: bool = True, spellcheck: bool = True, result_filter: str | None = None, goggles_id: str | None = None, units: str | None = None, extra_snippets: bool | None = None, summary: bool | None = None) Dict[str, Any][来源]#

该函数查询Brave搜索引擎API并返回一个字典,表示搜索结果。 详情请参阅https://api.search.brave.com/app/documentation/web-search/query

Parameters:
  • q (str) – 用户的搜索查询词。查询不能为空。查询最多400个字符和50个单词。

  • country (str) – 搜索结果来源的查询国家。 国家字符串仅限于2个字符的国家代码, 支持的国家列表。有关支持的值列表,请参阅 国家代码。(默认: :obj:`US `)

  • search_lang (str) – 搜索语言偏好。用于提供搜索结果的2个或更多字符的语言代码。有关可能值的列表,请参阅语言代码。

  • ui_lang (str) – 响应中首选的用户界面语言。 通常格式为'<语言代码>-<国家代码>'。 更多信息请参阅RFC 9110。有关支持的值列表,请参见UI语言代码。

  • count (int) – 返回的搜索结果数量。 最大值为20。实际返回数量可能少于请求数量。 将此参数与offset结合使用可实现搜索结果分页。

  • offset (int) – 基于零的偏移量,表示在返回结果前要跳过的每页搜索结果数量(计数)。最大值为9。实际返回数量可能少于请求值,具体取决于查询条件。要实现分页效果,请将此参数与count参数配合使用。例如,如果您的用户界面每页显示20个搜索结果,设置count为20且offset为0可显示第一页结果。要获取后续页面,将offset每次递增1(如0,1,2)。不同页面之间的结果可能存在重叠。

  • safesearch (str) –

    过滤搜索结果中的成人内容。 支持以下值: - 'off': 不进行任何过滤。 - 'moderate': 过滤露骨内容,如图片和视频,

    但允许搜索结果中出现成人域名。

    • 'strict': 从搜索结果中移除所有成人内容。

  • freshness (可选[str]) –

    按发现时间筛选搜索结果: - 'pd':过去24小时内发现的。 - 'pw':过去7天内发现的。 - 'pm':过去31天内发现的。 - 'py':过去365天内发现的。 - 'YYYY-MM-DDtoYYYY-MM-DD':也支持通过

    指定日期范围来设置时间段,例如'2022-04-01to2022-07-30'。

  • text_decorations (bool) - 是否在显示字符串(例如结果片段)中包含装饰标记(例如高亮字符)。

  • spellcheck (bool) – 是否对提供的查询进行拼写检查。如果启用了拼写检查器,修改后的查询将始终用于搜索。修改后的查询可以在查询响应模型的altered键中找到。

  • result_filter (可选[str]) - 一个用逗号分隔的字符串,用于指定要在搜索结果响应中包含的结果类型。如果不指定此参数,将返回所有可获得数据且订阅了相应选项计划的结果类型。响应始终包含query和type,分别用于标识任何查询修改和响应类型。可用的结果过滤值包括: - 'discussions' - 'faq' - 'infobox' - 'news' - 'query' - 'summarizer' - 'videos' - 'web' - 'locations'

  • goggles_id (可选[str]) – Goggles 作为在 Brave 搜索索引之上的自定义重新排序工具。更多详情,请参考 Goggles 代码库。

  • units (可选[str]) – 测量单位。如果未提供,单位将从搜索国家/地区派生。可能的值为: - 'metric':标准公制单位系统 - 'imperial':英制单位系统

  • extra_snippets (Optional[bool]) – 片段是从查询结果页面中获取的摘录,而extra_snippets允许您获取最多5个额外的备选摘录。仅适用于Free AI、Base AI、Pro AI、Base Data、Pro Data和Custom套餐。

  • summary (可选[bool]) – 此参数用于在网页搜索结果中生成摘要关键词。这是启用摘要功能所必需的。

Returns:

表示搜索结果的字典。

Return type:

字典[字符串, 任意类型]

search_duckduckgo(query: str, source: str = 'text', max_results: int = 5) List[Dict[str, Any]][来源]#

使用DuckDuckGo搜索引擎搜索给定查询的信息。

该函数查询DuckDuckGo API获取与给定搜索词相关的主题。结果会被格式化为一个字典列表,每个字典代表一个搜索结果。

Parameters:
  • query (str) – 要搜索的查询语句。

  • source (str) – 要查询的信息类型(例如:"text"、"images"、"videos")。默认为"text"。

  • max_results (int) – 最大结果数量,默认为5

Returns:

一个字典列表,其中每个字典

代表一个搜索结果。

Return type:

List[Dict[str, Any]]

search_exa(query: str, search_type: Literal['auto', 'neural', 'keyword'] = 'auto', category: Literal['company', 'research paper', 'news', 'pdf', 'github', 'tweet', 'personal site', 'linkedin profile', 'financial report'] | None = None, num_results: int = 10, include_text: List[str] | None = None, exclude_text: List[str] | None = None, use_autoprompt: bool = True, text: bool = False) Dict[str, Any][来源]#

使用Exa搜索API执行智能网络搜索,可选择内容提取。

Parameters:
  • query (str) – 搜索查询字符串。

  • search_type (Literal["auto", "neural", "keyword"]) – 要执行的搜索类型。"auto"会自动在关键词搜索和神经搜索之间做出选择。(默认值: "auto")

  • category (可选[Literal]) – 用于聚焦搜索的类别,例如"研究论文"或"新闻"。(默认: None)

  • num_results (int) – 要返回的结果数量(最多100个)。 (默认值: 10)

  • include_text (可选[列表[字符串]]) – 必须出现在网页文本中的字符串。限制为1个最多5个单词的字符串。 (默认值: None)

  • exclude_text (Optional[List[str]]) – 网页文本中必须不包含的字符串。限制为最多5个单词的1个字符串。 (default: None)

  • use_autoprompt (bool) – 是否使用Exa的autoprompt功能来增强查询。(默认: True)

  • text (bool) – 是否在结果中包含网页内容。 (默认: False)

Returns:

包含搜索结果和元数据的字典:
  • requestId (str): 请求的唯一标识符

  • autopromptString (str): 如果启用则生成的自动提示

  • autoDate (str): 自动提示生成的时间戳

  • resolvedSearchType (str): 实际使用的搜索类型

  • results (List[Dict]): 带有元数据的搜索结果列表

  • searchType (str): 被选中的搜索类型

  • costDollars (Dict): API费用的明细

Return type:

字典[字符串, 任意类型]

search_google(query: str, num_result_pages: int = 5) List[Dict[str, Any]][来源]#

使用Google搜索引擎搜索给定查询的信息。

Parameters:
  • query (str) – 要搜索的查询语句。

  • num_result_pages (int) – 要检索的结果页数。

Returns:

一个字典列表,其中每个字典代表一个网站。

每个字典包含以下键: - 'result_id': 顺序编号。 - 'title': 网站标题。 - 'description': 网站简要描述。 - 'long_description': 网站更多详细信息。 - 'url': 网站URL。

示例: {

'result_id': 1, 'title': 'OpenAI', 'description': '一个致力于确保人工通用智能造福全人类的组织。', 'long_description': 'OpenAI是一家非营利性人工智能研究公司。我们的目标是以最有可能造福全人类的方式推进数字智能', 'url': 'https://www.openai.com'

}

网站的标题、描述和URL。

Return type:

List[Dict[str, Any]]

search_linkup(query: str, depth: Literal['standard', 'deep'] = 'standard', output_type: Literal['searchResults', 'sourcedAnswer', 'structured'] = 'searchResults', structured_output_schema: str | None = None) Dict[str, Any][来源]#

在Linkup API中搜索查询并以多种格式返回结果。

Parameters:
  • query (str) – 搜索查询语句。

  • depth (Literal["standard", "deep"]) – 搜索的深度。 "standard"表示简单搜索,"deep"表示更全面的搜索。

  • (Literal["searchResults" (output_type) – “structured”]): 输出类型: - "searchResults"表示原始搜索结果, - "sourcedAnswer"表示带有支持来源的答案, - "structured"表示基于提供的模式输出。

  • "sourcedAnswer" – "structured"]): 输出类型: - "searchResults" 表示原始搜索结果, - "sourcedAnswer" 表示带有支持来源的答案, - "structured" 表示基于提供的模式输出。

:param“structured”]): The type of output:
  • "searchResults" 表示原始搜索结果,

  • "sourcedAnswer"表示带有支持来源的答案,

  • "structured"表示基于提供的模式输出。

Parameters:

structured_output_schema (可选[str]) – 如果output_type是 "structured",则指定输出的模式。必须是一个 表示有效对象JSON模式的字符串。

Returns:

表示搜索结果的字典。

结构取决于output_type。如果发生错误,将返回错误信息。

Return type:

字典[字符串, 任意类型]

search_wiki(entity: str) str[来源]#
Search the entity in WikiPedia and return the summary of the

必填页面,包含有关给定实体的真实信息。

Parameters:

entity (str) – 要搜索的实体。

Returns:

搜索结果。如果该实体对应的页面

存在,则以字符串形式返回该实体的摘要。

Return type:

字符串

使用Tavily搜索API为给定查询搜索信息。

Parameters:
  • query (str) – 要搜索的查询语句。

  • num_results (int) – 要检索的搜索结果数量(默认为5)。

  • **kwargs

    Tavily API支持的其他可选参数: - search_depth (str): "basic"或"advanced"搜索深度。 - topic (str): 搜索类别,例如"general"或"news"。 - days (int): 新闻相关搜索的时间范围(天数)。 - max_results (int): 返回的最大结果数量

    (覆盖num_results)。

    详情请参阅https://docs.tavily.com/docs/python-sdk/tavily-search/ api-reference。

Returns:

表示搜索结果的字典列表

每个字典包含: - 'result_id' (int): 结果的索引编号 - 'title' (str): 结果的标题 - 'description' (str): 结果的简要描述 - 'long_description' (str): 详细信息(如果有) - 'url' (str): 结果的URL链接 - 'content' (str): 搜索结果中的相关内容 - 'images' (list): 相关图片列表(如果

include_images为True时显示)

  • 'published_date' (str): 新闻主题的发布日期(如果有)

Return type:

List[Dict[str, Any]]

camel.toolkits.slack_toolkit 模块#

class camel.toolkits.slack_toolkit.SlackToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示Slack操作工具包的类。

该类提供了Slack操作的方法,例如创建新频道、加入现有频道、离开频道。

create_slack_channel(name: str, is_private: bool | None = True) str[来源]#

创建一个新的Slack频道,可以是公开的或私密的。

Parameters:
  • name (str) – 要创建的公共或私有频道的名称。

  • is_private (bool, optional) – 是否创建私有频道而非公共频道。默认为 True

Returns:

包含Slack相关信息的JSON字符串

频道已创建。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

delete_slack_message(time_stamp: str, channel_id: str) str[来源]#

向Slack频道删除一条消息。

Parameters:
  • time_stamp (str) - 要删除消息的时间戳。

  • channel_id (str) - 要删除消息的Slack频道ID。

Returns:

指示消息是否被成功删除的确认信息

或错误消息。

Return type:

字符串

Raises:

SlackApiError – 发送消息时发生错误。

get_slack_channel_information() str[来源]#
Retrieve Slack channels and return relevant information in JSON

格式。

Returns:

包含Slack频道信息的JSON字符串。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

get_slack_channel_message(channel_id: str) str[来源]#

从Slack频道检索消息。

Parameters:

channel_id (str) – 要从中检索消息的Slack频道ID。

Returns:

包含过滤后消息数据的JSON字符串。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道消息时出现错误。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

join_slack_channel(channel_id: str) str[来源]#

加入现有的Slack频道。

Parameters:

channel_id (str) – 要加入的Slack频道ID。

Returns:

显示是否成功加入的确认消息

或错误信息。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

leave_slack_channel(channel_id: str) str[来源]#

离开现有的Slack频道。

Parameters:

channel_id (str) – 要退出的Slack频道ID。

Returns:

显示是否成功离开的确认消息

或错误消息。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

send_slack_message(message: str, channel_id: str, user: str | None = None) str[来源]#

向Slack频道发送消息。

Parameters:
  • message (str) – 要发送的消息。

  • channel_id (str) – 要发送消息的Slack频道ID。

  • user (可选[str]) – 接收者的用户ID。 默认为 None

Returns:

显示消息是否成功发送的确认信息

成功发送或错误消息。

Return type:

字符串

Raises:

SlackApiError – 发送消息时发生错误。

camel.toolkits.twitter_toolkit 模块#

class camel.toolkits.twitter_toolkit.TwitterToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示Twitter操作工具包的类。

该类提供了创建推文、删除推文以及获取认证用户个人资料信息的方法。

参考文献

https://developer.x.com/en/portal/dashboard

注意事项

要使用此工具包,您需要设置以下环境变量: - TWITTER_CONSUMER_KEY: Twitter API的消费者密钥。 - TWITTER_CONSUMER_SECRET: Twitter API的消费者密钥密文。 - TWITTER_ACCESS_TOKEN: Twitter API的访问令牌。 - TWITTER_ACCESS_TOKEN_SECRET: Twitter API的访问令牌密文

API。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

camel.toolkits.twitter_toolkit.create_tweet(text: str, poll_options: List[str] | None = None, poll_duration_minutes: int | None = None, quote_tweet_id: int | str | None = None) str[来源]#

创建一条新推文,可选择包含投票或引用推文,或仅发布纯文本推文。

此函数向Twitter API发送POST请求以创建一条新推文。该推文可以是纯文本推文,也可以选择包含投票或是引用推文。在创建推文前会向用户显示确认提示。

Parameters:
  • text (str) – 推文的文本内容。Twitter对单条推文的字符限制是280个字符。

  • poll_options (可选[列表[字符串]]) - 用于带有投票的推文的投票选项列表。

  • poll_duration_minutes (Optional[int]) - 对于包含投票的推文,投票持续时间的分钟数。仅当请求中包含poll_options时才需要此参数。

  • quote_tweet_id (Optional[Union[int, str]]) - 被引用推文的链接。

Returns:

一条表示推文创建成功的消息,

包含推文ID和文本内容。如果向Twitter API的请求未成功,则返回错误信息。

Return type:

字符串

注意

您只能提供quote_tweet_id参数,或者poll_duration_minutespoll_options这对参数,但不能同时提供两者。

Reference:

https://developer.x.com/en/docs/x-api/tweets/manage-tweets/api-reference/post-tweets

camel.toolkits.twitter_toolkit.delete_tweet(tweet_id: str) str[来源]#

为授权用户删除指定ID的推文。

此函数向Twitter API发送DELETE请求以删除指定ID的推文。在发送请求之前,它会提示用户确认删除操作。

Parameters:

tweet_id (str) – 要删除的推文ID。

Returns:

一条指示删除结果的消息。如果

删除成功,该消息包含被删除推文的ID。如果删除未成功,该消息包含一条错误信息。

Return type:

字符串

Reference:

https://developer.x.com/en/docs/x-api/tweets/manage-tweets/api-reference/delete-tweets-id

camel.toolkits.twitter_toolkit.get_my_user_profile() str[来源]#

获取认证用户的Twitter个人资料信息。

该函数向Twitter API发送GET请求,以获取认证用户的个人资料信息,包括其置顶推文。然后,它会将这些信息格式化为可读的报告。

Returns:

经过格式化的已认证用户Twitter个人资料报告

信息。包括用户ID、姓名、用户名、个人简介、所在地、最新推文ID、头像图片URL、账号创建日期、保护状态、认证类型、公开指标以及置顶推文信息。如果向Twitter API发出的请求未成功,将返回错误信息。

Return type:

字符串

Reference:

https://developer.x.com/en/docs/x-api/users/lookup/api-reference/get-users-me

camel.toolkits.twitter_toolkit.get_user_by_username(username: str) str[来源]#

通过用户名(handle)获取一个用户的Twitter个人资料信息。

此函数向Twitter API发送GET请求以获取用户个人资料信息,包括其置顶推文。然后将这些信息格式化为可读报告。

Parameters:

username (str) – 要检索用户的用户名(handle)。

Returns:

用户Twitter个人资料信息的格式化报告。

包括用户ID、姓名、用户名、个人简介、所在地、 最新推文ID、头像图片URL、账号创建日期、 保护状态、验证类型、公开指标以及 置顶推文信息。如果向Twitter API的请求 未成功,则返回错误信息。

Return type:

字符串

Reference:

https://developer.x.com/en/docs/x-api/users/lookup/api-reference/get-users-by-username-username

camel.toolkits.weather_toolkit 模块#

class camel.toolkits.weather_toolkit.WeatherToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于与天气数据交互的工具包的类。

该类提供了使用OpenWeatherMap API获取指定城市天气数据的方法。

get_openweathermap_api_key() str[来源]#

从环境变量中获取OpenWeatherMap API密钥。

Returns:

OpenWeatherMap API密钥。

Return type:

字符串

Raises:
  • ValueError - 如果在环境中找不到API密钥

  • 变量.

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

get_weather_data(city: str, temp_units: Literal['kelvin', 'celsius', 'fahrenheit'] = 'kelvin', wind_units: Literal['meters_sec', 'miles_hour', 'knots', 'beaufort'] = 'meters_sec', visibility_units: Literal['meters', 'miles'] = 'meters', time_units: Literal['unix', 'iso', 'date'] = 'unix') str[来源]#

获取并返回指定城市的综合天气报告,以字符串形式呈现。该报告包含当前天气状况、温度、风力详情、能见度以及日出/日落时间,所有信息均格式化为易读的字符串。

该函数与OpenWeatherMap API交互以获取数据。

Parameters:
  • city (str) – 需要获取天气信息的城市名称。格式为"城市, 国家代码"(例如"Paris, FR"表示法国巴黎)。如果未提供国家代码,API将在所有国家中搜索该城市,当存在多个同名城市时可能导致错误结果。

  • temp_units (Literal['kelvin', 'celsius', 'fahrenheit']) – 温度单位。(默认: kelvin)

  • wind_units – (Literal['meters_sec', 'miles_hour', 'knots', 'beaufort']): 风速的单位。(默认: meters_sec)

  • visibility_units (Literal['meters', 'miles']) – 能见度距离的单位。(默认: meters)

  • time_units (Literal['unix', 'iso', 'date']) – 日出和日落时间的格式。(默认: unix)

Returns:

一个包含获取到的天气数据的字符串,格式化为

可读的形式。如果发生错误,将返回指示错误的消息。

Return type:

字符串

Example of return string:

“法国巴黎天气:15°C,体感温度13°C。最高气温:17°C, 最低气温:12°C。 风速:5米/秒,风向270度。能见度:10公里。 日出时间:05:46:05(UTC),日落时间:18:42:20(UTC)。"

注意

Please ensure that the API key is valid and has permissions

访问天气数据。

模块内容#

class camel.toolkits.ArxivToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于与arXiv API交互以搜索和下载学术论文的工具包。

download_papers(query: str, paper_ids: List[str] | None = None, max_results: int | None = 5, output_dir: str | None = './') str[来源]#

根据提供的查询从arXiv下载学术论文的PDF文件。

Parameters:
  • query (str) – 搜索查询字符串。

  • paper_ids (List[str], optional) – 要下载的特定arXiv论文ID列表。(默认值: :obj: None)

  • max_results (int, optional) – 要下载的搜索结果最大数量。(默认: :obj: 5)

  • output_dir (str, optional) - 用于保存下载PDF文件的目录。默认为当前目录。

Returns:

状态消息,指示成功或失败。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

search_papers(query: str, paper_ids: List[str] | None = None, max_results: int | None = 5) List[Dict[str, str]][来源]#

使用查询字符串和可选的论文ID在arXiv上搜索学术论文。

Parameters:
  • query (str) – 搜索查询字符串。

  • paper_ids (List[str], optional) – 要搜索的特定arXiv论文ID列表。(默认: :obj: None)

  • max_results (int, optional) – 要返回的最大搜索结果数量。(默认: :obj: 5)

Returns:

一个字典列表,每个字典包含

关于论文的信息,包括标题、发表日期、作者、条目ID、摘要以及从论文中提取的文本。

Return type:

List[Dict[str, str]]

camel.toolkits.AskNewsToolkit(*args, **kwargs)[来源]#

一个表示用于与AskNews API交互的工具包的类。

该类提供了使用AskNews API基于用户查询获取新闻、故事和其他内容的方法。

class camel.toolkits.AsyncAskNewsToolkit[来源]#

基类: BaseToolkit

一个表示用于异步与AskNews API交互的工具包的类。

该类提供使用AskNews API基于用户查询获取新闻、故事和其他内容的方法。

async get_news(query: str, n_articles: int = 10, return_type: Literal['string', 'dicts', 'both'] = 'string', method: Literal['nl', 'kw'] = 'kw') str | dict | Tuple[str, dict][来源]#

根据用户查询获取新闻或故事。

Parameters:
  • query (str) – 用于获取相关新闻或故事的搜索查询。

  • n_articles (int) – 响应中包含的文章数量。 (默认: :obj:10)

  • return_type (Literal["string", "dicts", "both"]) – 返回值的格式。(默认: :obj:”string”)

  • method (Literal["nl", "kw"]) – 搜索方法,"nl"表示自然语言搜索,"kw"表示关键词搜索(默认值::obj:”kw”)

Returns:

字符串,

字典,或同时包含新闻/故事内容,若处理失败则包含错误信息。

Return type:

Union[str, dict, Tuple[str, dict]]

async get_stories(query: str, categories: List[Literal['Politics', 'Economy', 'Finance', 'Science', 'Technology', 'Sports', 'Climate', 'Environment', 'Culture', 'Entertainment', 'Business', 'Health', 'International']], reddit: int = 3, expand_updates: bool = True, max_updates: int = 2, max_articles: int = 10) dict | str[来源]#

根据提供的参数获取故事。

Parameters:
  • query (str) - 用于获取相关故事的搜索查询。

  • categories (list) – 用于筛选故事的分类列表。

  • reddit (int) – 要包含的Reddit线程数量。 (默认值: 3)

  • expand_updates (bool) - 是否包含详细更新。 (默认: True)

  • max_updates (int) – 每个故事的最大最近更新次数。 (默认值: 2)

  • max_articles (int) – 每次更新关联的最大文章数量。(默认值: 10)

Returns:

包含故事及其相关数据的字典

如果处理失败则返回错误信息。

Return type:

联合[字典, 字符串]

get_tools() List[FunctionTool][来源]#
Returns a list of FunctionTool objects representing the functions

在工具包中。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

根据给定的查询执行实时网络搜索。

Parameters:
  • queries (List[str]) – 搜索查询的列表。

  • return_type (Literal["string", "dicts", "both"]) – 返回值的格式。(默认: "string")

Returns:

一个字符串,

字典, 或同时包含搜索结果, 如果进程失败则包含错误信息。

Return type:

Union[str, dict, Tuple[str, dict]]

async query_finance(asset: Literal['bitcoin', 'ethereum', 'cardano', 'uniswap', 'ripple', 'solana', 'polkadot', 'polygon', 'chainlink', 'tether', 'dogecoin', 'monero', 'tron', 'binance', 'aave', 'tesla', 'microsoft', 'amazon'], metric: Literal['news_positive', 'news_negative', 'news_total', 'news_positive_weighted', 'news_negative_weighted', 'news_total_weighted'] = 'news_positive', return_type: Literal['list', 'string'] = 'string', date_from: datetime | None = None, date_to: datetime | None = None) list | str[来源]#

获取指定资产、指标和日期范围内的资产情绪数据。

Parameters:
  • asset (Literal) – 要获取情绪数据的资产。

  • metric (Literal) – 要分析的情感指标。

  • return_type (Literal["list", "string"]) – 返回值的格式。(默认: "string")

  • date_from (datetime, optional) – 数据的起始日期和时间,采用ISO 8601格式。

  • date_to (datetime, optional) – 数据的结束日期和时间,使用ISO 8601格式。

Returns:

包含日期时间的字典列表

以及数值或描述所有日期时间与数值对的字符串, 用于为感兴趣主题的新闻情绪提供量化时间序列数据, 如果处理失败则返回错误信息。

Return type:

Union[列表, 字符串]

async search_reddit(keywords: List[str], n_threads: int = 5, return_type: Literal['string', 'dicts', 'both'] = 'string', method: Literal['nl', 'kw'] = 'kw') str | dict | Tuple[str, dict][来源]#

根据提供的关键词搜索Reddit。

Parameters:
  • keywords (list) – 要在Reddit上搜索的关键词列表。

  • n_threads (int) – 要总结并返回的Reddit线程数量。 (默认: :obj:5)

  • return_type (Literal["string", "dicts", "both"]) – 返回值的格式。(默认: :obj:”string”)

  • method (Literal["nl", "kw"]) – 搜索方法,可以是自然语言搜索的"nl"或关键词搜索的"kw"。 (默认值: :obj:”kw”)

Returns:

Reddit搜索

返回结果为字符串、字典或两者皆有,如果处理失败则返回错误信息。

Return type:

Union[str, dict, Tuple[str, dict]]

class camel.toolkits.AudioAnalysisToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

ask_question_about_audio(audio_path: str, question: str) str[来源]#

询问关于音频的任何问题,并通过多模态模型获取答案。

Parameters:
  • audio_path (str) - 音频文件的路径。

  • question (str) – 关于音频要询问的问题。

Returns:

问题的答案。

Return type:

字符串

audio2text(audio_path: str) str[来源]#

将音频转录为文本。

Parameters:

audio_path (str) - 音频文件或URL的路径。

Returns:

转录的文本。

Return type:

字符串

get_tools() List[FunctionTool][来源]#
Returns a list of FunctionTool objects representing the functions

在工具包中。

Returns:

表示工具包中函数的FunctionTool对象列表

工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.BaseToolkit(timeout: float | None = None)[来源]#

基类:object

工具包的基础类。

Parameters:

timeout (可选[float]) - 工具的超时时间。

class FastMCP(name: str | None = None, instructions: str | None = None, **settings: Any)#

基类:object

add_prompt(prompt: Prompt) None#

向服务器添加一个提示。

Parameters:

prompt – 要添加的Prompt实例

add_resource(resource: Resource) None#

向服务器添加资源。

Parameters:

resource – 要添加的Resource实例

add_tool(fn: Callable[[...], Any], name: str | None = None, description: str | None = None) None#

向服务器添加一个工具。

工具函数可以选择性地通过添加一个带有Context类型注解的参数来请求Context对象。有关示例,请参见@tool装饰器。

Parameters:
  • fn – 要注册为工具的函数

  • name – 工具的可选名称(默认为函数名称)

  • description – 工具功能的可选描述

async call_tool(name: str, arguments: dict[str, Any]) Sequence[TextContent | ImageContent | EmbeddedResource]#

通过名称调用工具并传入参数。

get_context() Context[ServerSession, object]#

返回一个Context对象。请注意,该上下文仅在请求期间有效;在请求之外,大多数方法都会报错。

async get_prompt(name: str, arguments: dict[str, Any] | None = None) GetPromptResult#

通过名称和参数获取提示。

property instructions: str | None#
async list_prompts() list[Prompt]#

列出所有可用的提示词。

async list_resource_templates() list[ResourceTemplate]#
async list_resources() list[Resource]#

列出所有可用资源。

async list_tools() list[Tool]#

列出所有可用工具。

property name: str#
prompt(name: str | None = None, description: str | None = None) Callable[[Callable[[...], Any]], Callable[[...], Any]]#

用于注册提示的装饰器。

Args:

name: 提示的可选名称(默认为函数名) description: 提示功能的可选描述

Example:

@server.prompt() def analyze_table(table_name: str) -> list[Message]:

schema = read_table_schema(table_name) return [

{

“role”: “user”, “content”: f”分析这个架构:

{schema}”

}

]

@server.prompt() async def analyze_file(path: str) -> list[Message]:

content = await read_file(path) return [

{

“角色”: “用户”, “内容”: {

“类型”: “资源”, “资源”: {

“uri”: f”file://{path}”, “text”: 内容

}

}

}

]

async read_resource(uri: AnyUrl | str) Iterable[ReadResourceContents]#

通过URI读取资源。

resource(uri: str, *, name: str | None = None, description: str | None = None, mime_type: str | None = None) Callable[[Callable[[...], Any]], Callable[[...], Any]]#

装饰器,用于将函数注册为资源。

该函数将在读取资源时被调用以生成其内容。 函数可以返回: - str 表示文本内容 - bytes 表示二进制内容 - 其他类型将被转换为JSON

如果URI包含参数(例如"resource://{param}")或者函数具有参数,它将被注册为模板资源。

Parameters:
  • uri – 资源的URI(例如"resource://my-resource"或"resource://{param}")

  • name – 资源的可选名称

  • description – 资源的可选描述

  • mime_type – 资源的可选MIME类型

示例

@server.resource(“resource://my-resource”) def get_data() -> str:

return “Hello, world!”

@server.resource("resource://my-resource") async get_data() -> str:

data = await fetch_data() return f"你好,世界! {data}"

@server.resource(“resource://{city}/weather”) def get_weather(city: str) -> str:

返回 f"{city}的天气"

@server.resource(“resource://{city}/weather”) async def get_weather(city: str) -> str:

data = await fetch_weather(city) return f"城市{city}的天气: {data}"

run(transport: Literal['stdio', 'sse'] = 'stdio') None#

运行FastMCP服务器。请注意这是一个同步函数。

Parameters:

transport – 使用的传输协议("stdio" 或 "sse")

async run_sse_async() None#

使用SSE传输运行服务器。

async run_stdio_async() None#

使用stdio传输运行服务器。

sse_app() Starlette#

返回一个SSE服务器应用的实例。

tool(name: str | None = None, description: str | None = None) Callable[[Callable[[...], Any]], Callable[[...], Any]]#

用于注册工具的装饰器。

工具可以选择性地通过添加带有Context类型注解的参数来请求Context对象。该上下文提供了对MCP功能的访问,如日志记录、进度报告和资源访问。

Parameters:
  • name – 工具的可选名称(默认为函数名称)

  • description – 工具功能的可选描述

示例

@server.tool() def my_tool(x: int) -> str:

return str(x)

@server.tool() def tool_with_context(x: int, ctx: Context) -> str:

ctx.info(f"正在处理 {x}") return str(x)

@server.tool() async def async_tool(x: int, context: Context) -> str:

await context.report_progress(50, 100) return str(x)

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

mcp: FastMCP#
timeout: float | None = None#
class camel.toolkits.BrowserToolkit(headless: bool = False, cache_dir: str | None = None, channel: Literal['chrome', 'msedge', 'chromium'] = 'chromium', history_window: int = 5, web_agent_model: BaseModelBackend | None = None, planning_agent_model: BaseModelBackend | None = None, output_language: str = 'en')[来源]#

基类: BaseToolkit

一个用于浏览网页并与网页交互的类。

该类提供了浏览网页以及与网页交互的方法。

browse_url(task_prompt: str, start_url: str, round_limit: int = 12) str[来源]#

一个强大的工具包,可以模拟浏览器交互来解决需要多步操作的任务。

Parameters:
  • task_prompt (str) – 需要解决的任务提示。

  • start_url (str) - 要访问的起始URL。

  • round_limit (int) – 解决任务的轮次限制。 (默认: 12).

Returns:

任务模拟结果。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.CodeExecutionToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于代码执行的工具包。

Parameters:
  • sandbox (str) - 用于执行代码的环境类型。 (默认: subprocess)

  • verbose (bool) - 是否打印代码执行的输出。 (默认: False)

  • unsafe_mode (bool) - 如果为True,解释器将通过eval()运行代码而不进行任何安全检查。(默认值: False)

  • import_white_list (可选[列表[字符串]]) – 允许导入的列表。 (默认: None)

  • require_confirm (bool) – 是否在执行代码前需要确认。 (默认: False)

execute_code(code: str) str[来源]#

执行给定的代码片段。

Parameters:

code (str) – 输入到Code Interpreter工具调用的代码。

Returns:

来自Code Interpreter工具调用的文本输出。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.DalleToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示使用OpenAI的DALL-E模型进行图像生成的工具包类。

base64_to_image(base64_string: str) Image | None[来源]#

将base64编码的字符串转换为PIL Image对象。

Parameters:

base64_string (str) – 图像的base64编码字符串。

Returns:

PIL图像对象,如果转换失败则为None

失败。

Return type:

可选[Image.Image]

get_dalle_img(prompt: str, image_dir: str = 'img') str[来源]#
Generate an image using OpenAI’s DALL-E model.

生成的图像已保存到指定目录。

Parameters:
  • prompt (str) - 用于生成图像的文本提示。

  • image_dir (str) – 保存生成图片的目录。默认为'img'。

Returns:

保存图像的路径。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

image_path_to_base64(image_path: str) str[来源]#

将图像的文件路径转换为Base64编码字符串。

Parameters:

image_path (str) – 图像文件的路径。

Returns:

一个Base64编码的字符串,表示图像的内容

文件。

Return type:

字符串

image_to_base64(image: Image) str[来源]#

将图像转换为base64编码的字符串。

该函数接收一个图像对象作为输入,将图像编码为PNG格式的base64字符串并返回。如果编码过程中遇到错误,它会打印错误信息并返回None。

Parameters:

image – 要编码的图像对象,支持任何可以保存为PNG格式的图像格式。

Returns:

图像的base64编码字符串。

Return type:

字符串

class camel.toolkits.DappierToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于与Dappier API交互的工具包的类。

该类提供实时数据搜索和获取AI推荐的方法,涵盖新闻、金融、股市、体育、天气等关键垂直领域。

get_ai_recommendations(query: str, data_model_id: str = 'dm_01j0pb465keqmatq9k83dthx34', similarity_top_k: int = 9, ref: str | None = None, num_articles_ref: int = 0, search_algorithm: Literal['most_recent', 'semantic', 'most_recent_semantic', 'trending'] = 'most_recent') List[Dict[str, str]] | Dict[str, str][来源]#

根据提供的查询和数据模型,获取AI驱动的推荐建议。

该函数使用指定的数据模型和搜索算法获取实时AI生成的推荐结果。返回结果包含基于查询的个性化内容,并可选择性地包含与特定参考领域的相关性。

Supported Data Models:
  • dm_01j0pb465keqmatq9k83dthx34:

来自顶级体育来源的实时新闻、更新和个性化内容,包括Sportsnaut、Forever Blueshirts、Minnesota Sports Fan、LAFB Network、Bounding Into Sports和Ringside Intel。 - dm_01j0q82s4bfjmsqkhs3ywm3x6y: 来自顶级来源如The Mix、Snipdaily、Nerdable和Familyproof的实时更新、分析和个性化内容。

Parameters:
  • query (str) – 用于获取推荐结果的用户查询。

  • data_model_id (str, optional) – 用于推荐的数据模型ID。数据模型ID总是以"dm_"前缀开头。(默认值: :obj: dm_01j0pb465keqmatq9k83dthx34)

  • similarity_top_k (int, optional) – 基于相似度检索的top文档数量。(默认: :obj: 9)

  • ref (可选[str], 可选) – 应该显示AI推荐内容的网站域名。(默认值: :obj: None)

  • num_articles_ref (int, optional) – 从指定参考域(ref)返回的最小文章数量。其余文章将来自RAG模型中的其他站点。(默认值: :obj: 0)

  • (Literal[ (search_algorithm) – "most_recent", "semantic", "most_recent_semantic", "trending", ], 可选): 用于检索文章的搜索算法。(默认: :obj: most_recent)

Returns:

推荐文章或内容列表

基于指定的参数、查询和数据模型。

Return type:

List[Dict[str, str]]

注意

提供多个数据模型ID,可在以下位置找到: https://marketplace.dappier.com/marketplace

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

search_real_time_data(query: str, ai_model_id: str = 'am_01j06ytn18ejftedz6dyhz2b15') str[来源]#

使用AI模型搜索实时数据。

该函数使用指定的AI模型基于给定查询访问实时信息。根据AI模型ID的不同,获取的数据可能包括通用网络搜索结果或财经新闻和股票价格。

Supported AI Models:
  • am_01j06ytn18ejftedz6dyhz2b15:

获取实时的Google网页搜索结果,包括最新新闻、天气更新、旅行详情、优惠信息等。 - am_01j749h8pbf7ns8r1bq9s2evrh: 从polygon.io获取实时财经新闻、股票价格和交易数据,提供AI驱动的洞察和即时更新。

Parameters:
  • query (str) – 用户提供的查询语句。示例包括: - "今天德克萨斯州奥斯汀的天气如何?" - "Meta公司的最新新闻是什么?" - "AAPL的股票价格是多少?"

  • ai_model_id (str, optional) – 用于查询的AI模型ID。 AI模型ID始终以"am_"前缀开头。 (默认值: am_01j06ytn18ejftedz6dyhz2b15)

Returns:

与提供的查询相对应的搜索结果

AI模型ID。根据所选的AI模型,这可能包含实时搜索数据。

Return type:

字符串

注意

提供多个AI模型ID,可在以下位置找到: https://marketplace.dappier.com/marketplace

class camel.toolkits.DataCommonsToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个代表Data Commons工具包的类。

该类提供了从Data Commons知识图谱查询和检索数据的方法。主要功能包括: - 执行SPARQL查询 - 检索与节点关联的三元组 - 获取统计时间序列数据 - 分析属性标签和值 - 检索给定地点类型内的地点 - 获取特定变量和位置的统计值

所有数据均来自Data Commons的知识图谱。 更多详情请参阅https://datacommons.org/browser/

get_places_in(dcids: list, place_type: str) Dict[str, Any] | None[来源]#

检索给定地点类型内的地点。

Parameters:
  • dcids (列表) - 要分析的Data Commons ID(DCID)列表。

  • place_type (str) - 要筛选的地点类型。

Returns:

每个DCID的分析结果如果

成功,(默认:None)否则。

Return type:

可选[字典[str, 任意类型]]

Reference:

https://docs.datacommons.org/api/python/place_in.html

get_property_labels(dcids: str | List[str], out: bool = True) Dict[str, List[str]] | None[来源]#

检索并分析给定DCID的属性标签。

Parameters:
  • dcids (列表) – 要分析的Data Commons ID(DCID)列表。

  • out (bool) - 要检索属性的方向。(默认: True)

Returns:

每个DCID的分析结果如果

成功,(默认: None) 否则。

Return type:

可选[字典[str, 列表[str]]]

Reference:

https://docs.datacommons.org/api/python/property_label.html

get_property_values(dcids: str | List[str], prop: str, out: bool | None = True, value_type: str | None = None, limit: int | None = None) Dict[str, Any] | None[来源]#

检索并分析给定DCIDs的属性值。

Parameters:
  • dcids (列表) - 要分析的Data Commons ID(DCID)列表。

  • prop (str) - 要分析的属性。

  • value_type (str, optional) – 用于筛选的属性值类型。默认为NONE。仅当该值引用节点时适用。

  • out (bool, optional) – 标签的方向。(默认: True) (仅返回指向请求节点的响应节点)。如果设为False,将仅返回远离请求节点的响应节点。(默认: None)

  • limit (int, optional) – (≤ 500) 每个节点返回的最大值数量。(默认: datacommons.utils._MAX_LIMIT)

Returns:

每个DCID的分析结果如果

成功,(默认:None)否则。

Return type:

可选[字典[str, 任意类型]]

Reference:

https://docs.datacommons.org/api/python/property_value.html

get_stat_all(places: str, stat_vars: str) dict | None[来源]#

获取给定地点和日期的统计变量的值。

Parameters:
  • places (str) – 要查询的Place对象的DCID ID。 (这里的DCID代表Data Commons ID,是Data Commons中分配给所有实体的唯一标识符。)

  • stat_vars (str) – 统计变量的dcids,位于 https://datacommons.org/browser/StatisticalVariable

Returns:

一个以地点DCID为键的字典

如果成功,值为元组列表,(默认: None) 否则。

Return type:

可选[字典]

Reference:

https://docs.datacommons.org/api/python/stat_all.html

get_stat_time_series(place: str, stat_var: str, measurement_method: str | None = None, observation_period: str | None = None, unit: str | None = None, scaling_factor: str | None = None) Dict[str, Any] | None[来源]#

获取某个地点的统计时间序列数据。

Parameters:
  • place (str) – 要查询的Place的dcid。

  • stat_var (str) – StatisticalVariable的dcid。

  • measurement_method (str, optional) – 用于测量统计变量的技术。(默认: None)

  • observation_period (str, optional) – 进行观测的时间周期。(默认: None)

  • scaling_factor (str, optional) - 统计变量的属性,表示测量值乘以的因子以符合特定格式。(默认: None)

  • unit (str, optional) – 测量单位。(默认值: None)

Returns:

一个包含统计数据的字典

如果成功则为时间序列数据,(默认: None) 否则。

Return type:

可选[字典[str, 任意类型]]

Reference:

https://docs.datacommons.org/api/python/stat_series.html

get_stat_value(place: str, stat_var: str, date: str | None = None, measurement_method: str | None = None, observation_period: str | None = None, unit: str | None = None, scaling_factor: str | None = None) float | None[来源]#

获取给定地点和日期的统计变量的值。

Parameters:
  • place (str) – 要查询的Place的DCID。

  • stat_var (str) – 统计变量的DCID。

  • date (str, optional) – 首选的观测日期,采用ISO 8601格式。如果未指定,则返回最新的观测值。 (默认值: None)

  • measurement_method (str, optional) – 首选measurementMethod值的DCID。(默认: None)

  • observation_period (str, optional) – 首选的观察周期值。(默认: None)

  • unit (str, optional) – 首选单位值的DCID。 (默认: None)

  • scaling_factor (str, optional) – 首选的scalingFactor值。 (默认: None)

Returns:

统计变量在

给定地点和日期的值(如果成功,默认为:None),否则返回其他值。

Return type:

可选[浮点数]

Reference:

https://docs.datacommons.org/api/python/stat_value.html

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

get_triples(dcids: str | List[str], limit: int = 500) Dict[str, List[tuple]] | None[来源]#

检索与节点关联的三元组。

Parameters:
  • dcids (Union[str, List[str]]) - 要查询的单个DCID或DCID列表

  • limit (int) – 每个属性和类型组合的最大三元组数量。(默认: 500)

Returns:

一个字典,其中键是

DCIDs,如果成功则值为关联三元组的列表, (默认: None) 否则。

Return type:

可选[字典[str, 列表[元组]]]

注意: - 如果缺少任何必需参数,该函数将抛出ValueError

缺少参数。

  • 如果dcids不是字符串或字符串列表,该函数将引发TypeError。

  • 如果限制值不在1到500之间,该函数将引发ValueError。

  • 如果提供的DCID中有一个或多个在Data Commons知识图谱中不存在,该函数将引发KeyError。

  • 如果发生意外错误,该函数将引发异常。

Reference:

https://docs.datacommons.org/api/python/triple.html

query_data_commons(query_string: str) List[Dict[str, Any]] | None[来源]#

使用SPARQL查询Data Commons知识图谱。

Parameters:

query_string (str) – 一个SPARQL查询字符串。

Returns:

字典列表,每个

表示一个符合查询条件的节点(如果成功), (默认: None) 否则。

Return type:

可选[列表[字典[str, 任意]]]

注意: - 仅支持有限的SPARQL功能子集(ORDER BY,

DISTINCT, LIMIT).

  • 查询中的每个变量都应有一个'typeOf'条件。

  • Python SPARQL 库目前仅支持 API 的 V1 版本。

Reference:

https://docs.datacommons.org/api/python/query.html

class camel.toolkits.ExcelToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于从Excel文件中提取详细单元格信息的工具包类。

该类提供了处理docx、pdf、pptx等文件的方法,但无法处理excel文件。

extract_excel_content(document_path: str) str[来源]#

从Excel文件中提取详细的单元格信息,包括多个工作表。

Parameters:

document_path (str) – Excel文件的路径。

Returns:

提取的Excel信息,包括每个工作表的详细信息。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.FileWriteToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于创建、写入和修改文件中文本的工具包。

该类提供跨平台(macOS、Linux、Windows)支持,可用于写入多种文件格式(Markdown、DOCX、PDF和纯文本)、替换现有文件中的文本、自动备份、自定义编码以及为特殊格式提供增强的格式化选项。

get_tools() List[FunctionTool][来源]#

返回一个FunctionTool对象列表,表示工具包中的函数。

Returns:

表示FunctionTool对象的列表

此工具包中可用的函数。

Return type:

列表[FunctionTool]

write_to_file(content: str | List[List[str]], filename: str, encoding: str | None = None) str[来源]#

将给定内容写入文件。

If the file exists, it will be overwritten. Supports multiple formats: Markdown (.md, .markdown, default), Plaintext (.txt), CSV (.csv), DOC/DOCX (.doc, .docx), PDF (.pdf), JSON (.json), YAML (.yml, .yaml), and HTML (.html, .htm).

Parameters:
  • content (Union[str, List[List[str]]]) – 要写入文件的内容。对于所有格式,内容必须是字符串或符合相应格式的列表。

  • filename (str) - 文件名或文件路径。如果提供的是相对路径,将会被解析为self.output_dir。

  • encoding (可选[str]) – 要使用的字符编码。(默认值: :obj: None)

Returns:

一条指示成功或错误详情的消息。

Return type:

字符串

class camel.toolkits.FunctionTool(func: Callable, openai_tool_schema: Dict[str, Any] | None = None, synthesize_schema: bool | None = False, synthesize_schema_model: BaseModelBackend | None = None, synthesize_schema_max_retries: int = 2, synthesize_output: bool | None = False, synthesize_output_model: BaseModelBackend | None = None, synthesize_output_format: Type[BaseModel] | None = None)[来源]#

基类:object

OpenAI聊天模型可调用函数的抽象。参见 https://platform.openai.com/docs/api-reference/chat/create

默认情况下,工具模式将从函数中解析,或者您可以提供用户定义的工具模式来覆盖。

Parameters:
  • func (Callable) – 要调用的函数。默认情况下,工具模式会从函数签名和文档字符串中解析。

  • openai_tool_schema (可选[字典[字符串, 任意类型]], 可选) – 用户自定义的OpenAI工具模式,用于覆盖默认结果。 (默认值: None)

  • synthesize_schema (Optional[bool], optional) - 是否启用模式助手模型,在验证失败或未提供有效模式时自动合成模式。(默认: False)

  • synthesize_schema_model (Optional[BaseModelBackend], optional) – 一个 用于合成模式的辅助模型(例如LLM模型),当synthesize_schema启用且未提供有效模式时使用。(默认值:None

  • synthesize_schema_max_retries (int, optional) – 当先前尝试失败时,使用模式助手模型进行模式合成的最大重试次数。(默认值: 2)

  • synthesize_output (Optional[bool], optional) - 用于启用合成输出模式的标志,其中输出将基于函数的执行结果进行合成。(默认值: False)

  • synthesize_output_model (可选[BaseModelBackend], 可选) – 用于合成模式中输出合成的模型。 (默认值: None)

  • synthesize_output_format (Optional[Type[BaseModel]], optional) – 合成输出时的响应格式。(默认: None)

async async_call(*args: Any, **kwargs: Any) Any[来源]#
get_function_description() str[来源]#

从OpenAI工具模式中获取函数的描述。

Returns:

该函数的描述。

Return type:

字符串

get_function_name() str[来源]#

从OpenAI工具模式中获取函数名称。

Returns:

函数名称。

Return type:

字符串

get_openai_function_schema() Dict[str, Any][来源]#

从OpenAI工具模式中获取函数的模式。

该方法提取并返回与此函数关联的OpenAI工具模式中特定于函数的部分。

Returns:

OpenAI工具中函数的模式

schema.

Return type:

字典[字符串, 任意类型]

get_openai_tool_schema() Dict[str, Any][来源]#

获取此函数的OpenAI工具模式。

该方法返回与此函数关联的OpenAI工具模式,在验证其符合OpenAI规范后。

Returns:

此函数的OpenAI工具模式。

Return type:

字典[字符串, 任意类型]

get_parameter(param_name: str) Dict[str, Any][来源]#

从函数模式中获取特定参数的架构。

Parameters:

param_name (str) – 要获取模式的参数名称。

Returns:

指定参数的架构。

Return type:

字典[字符串, 任意类型]

get_paramter_description(param_name: str) str[来源]#

从函数模式中获取特定参数的描述。

Parameters:

param_name (str) – 要获取描述的参数的名称。

Returns:

指定参数的描述。

Return type:

字符串

property is_async: bool#
property parameters: Dict[str, Any]#

获取属性parameters的Getter方法。

Returns:

包含以下信息的字典

该函数的参数。

Return type:

字典[字符串, 任意类型]

set_function_description(description: str) None[来源]#

设置OpenAI工具模式中函数的描述。

Parameters:

描述 (str) – 该函数的描述信息。

set_function_name(name: str) None[来源]#

设置OpenAI工具模式中函数的名称。

Parameters:

name (str) – 要设置的函数名称。

set_openai_function_schema(openai_function_schema: Dict[str, Any]) None[来源]#

在OpenAI工具模式中设置函数的模式。

Parameters:

openai_function_schema (Dict[str, Any]) – 要在OpenAI工具模式中设置的函数模式。

set_openai_tool_schema(schema: Dict[str, Any]) None[来源]#

设置此函数的OpenAI工具模式。

允许为该函数设置自定义的OpenAI工具架构。

Parameters:

schema (Dict[str, Any]) – 要设置的OpenAI工具模式。

set_parameter(param_name: str, value: Dict[str, Any])[来源]#

设置函数模式中特定参数的架构。

Parameters:
  • param_name (str) - 要为其设置模式的参数名称。

  • value (Dict[str, Any]) – 要为参数设置的schema。

set_paramter_description(param_name: str, description: str) None[来源]#

为函数模式中的特定参数设置描述。

Parameters:
  • param_name (str) – 要设置描述的参数名称。

  • description (str) - 参数的描述信息。

synthesize_execution_output(args: tuple[Any, ...] | None = None, kwargs: Dict[str, Any] | None = None) Any[来源]#

根据提供的位置参数和关键字参数,合成函数的输出。

Parameters:
  • args (可选[tuple]) – 在合成过程中传递给函数的位置参数。(默认值: None)

  • kwargs (可选[Dict[str, Any]]) – 在合成过程中传递给函数的关键字参数。(默认值: None)

Returns:

函数执行生成的合成输出。如果未提供

合成模型,则会记录警告信息。

Return type:

任何

synthesize_openai_tool_schema(max_retries: int | None = None) Dict[str, Any][来源]#

为指定函数合成一个OpenAI工具模式。

该方法使用语言模型(LLM)为指定函数合成OpenAI工具模式,首先生成文档字符串,然后基于函数源代码创建模式。如果失败,模式合成和验证过程最多会重试max_retries次。

Parameters:

max_retries (Optional[int], optional) – 如果模式合成和验证过程失败时的最大重试次数。(默认值: None)

Returns:

该函数的OpenAI工具合成模式。

Return type:

字典[字符串, 任意类型]

Raises:

ValueError – 如果模式合成或验证在达到最大重试次数后仍然失败,将引发ValueError错误,提示需要手动设置模式。

static validate_openai_tool_schema(openai_tool_schema: Dict[str, Any]) None[来源]#

验证OpenAI工具模式是否符合 ToolAssistantToolsFunction。 此函数检查提供的openai_tool_schema是否遵循 OpenAI的ToolAssistantToolsFunction所需规范。它确保 函数描述和参数根据JSON模式规范正确格式化。 :param openai_tool_schema: 要验证的OpenAI工具模式

验证。

Raises:
  • ValidationError - 如果模式不符合规范时抛出。

  • SchemaError - 如果参数不符合JSON Schema引用规范。

class camel.toolkits.GithubToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于与GitHub仓库交互的工具包的类。

This class provides methods for retrieving open issues, retrieving

具体问题,以及在GitHub仓库中创建拉取请求。

Parameters:
  • repo_name (str) - GitHub仓库的名称。

  • access_token (str, optional) – 用于GitHub身份验证的访问令牌。如果未提供,将使用get_github_access_token方法获取。

create_pull_request(file_path: str, new_content: str, pr_title: str, body: str, branch_name: str) str[来源]#

创建一个拉取请求。

此函数在指定仓库中创建一个拉取请求,该请求将特定路径下的文件内容更新为新内容。拉取请求描述中包含问题标题和编号的相关信息。

Parameters:
  • file_path (str) – 仓库中待更新文件的路径。

  • new_content (str) - 指定文件的新内容。

  • pr_title (str) - 这个pull request所解决问题的标题。

  • body (str) – 拉取请求的提交信息。

  • branch_name (str) - 要创建并从中提交拉取请求的分支名称。

Returns:

关于是否成功创建拉取请求的格式化报告

成功与否。

Return type:

字符串

get_all_file_paths(path: str = '') List[str][来源]#

递归获取GitHub仓库中的所有文件路径。

Parameters:

path (str) – 开始遍历的仓库路径。 空字符串表示从根目录开始。 (默认值: :obj: “”)

Returns:

指定目录内的文件路径列表

结构。

Return type:

List[str]

get_github_access_token() str[来源]#

从环境变量中获取GitHub访问令牌。

Returns:

包含GitHub访问令牌的字符串。

Return type:

字符串

Raises:

ValueError – 如果在环境变量中未找到API密钥或密钥。

get_issue_content(issue_number: int) str[来源]#

根据编号获取特定问题的内容。

Parameters:

issue_number (int) – 要获取的问题编号。

Returns:

问题内容详情。

Return type:

字符串

get_issue_list(state: Literal['open', 'closed', 'all'] = 'all') List[Dict[str, object]][来源]#

从GitHub仓库获取所有问题。

Parameters:

state (Literal["open", "closed", "all"]) – 要获取的拉取请求的状态。(默认: :obj: all) 可选值为: - "open": 仅获取打开的拉取请求。 - "closed": 仅获取已关闭的拉取请求。 - "all": 获取所有拉取请求,无论状态如何。

Returns:

一个字典列表,其中每个

字典包含问题编号和标题。

Return type:

列表[字典[str, 对象]]

get_pull_request_code(pr_number: int) List[Dict[str, str]][来源]#

获取特定拉取请求的代码变更。

Parameters:

pr_number (int) – 要获取的拉取请求编号。

Returns:

一个字典列表,其中每个字典

包含文件名和对应的代码变更(补丁)。

Return type:

List[Dict[str, str]]

get_pull_request_comments(pr_number: int) List[Dict[str, str]][来源]#

获取特定拉取请求中的评论。

Parameters:

pr_number (int) – 要获取的拉取请求编号。

Returns:

一个字典列表,其中每个字典

包含用户ID和评论内容。

Return type:

List[Dict[str, str]]

get_pull_request_list(state: Literal['open', 'closed', 'all'] = 'all') List[Dict[str, object]][来源]#

从GitHub仓库获取所有拉取请求。

Parameters:

state (Literal["open", "closed", "all"]) – 要获取的拉取请求的状态。(默认: :obj: all) 可选值为: - "open": 仅获取打开的拉取请求。 - "closed": 仅获取已关闭的拉取请求。 - "all": 获取所有拉取请求,无论状态如何。

Returns:

一个字典列表,其中每个字典包含

拉取请求编号和标题。

Return type:

列表

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

retrieve_file_content(file_path: str) str[来源]#

从GitHub仓库检索文件内容。

Parameters:

file_path (str) – 要检索的文件路径。

Returns:

文件的解码内容。

Return type:

字符串

class camel.toolkits.GoogleCalendarToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示Google日历操作工具包的类。

该类提供了从Google日历创建事件、检索事件、更新事件和删除事件的方法。

create_event(event_title: str, start_time: str, end_time: str, description: str = '', location: str = '', attendees_email: List[str] | None = None, timezone: str = 'UTC') Dict[str, Any][来源]#

在用户的主Google日历中创建一个事件。

Parameters:
  • event_title (str) - 事件的标题。

  • start_time (str) - 以ISO格式表示的起始时间(YYYY-MM-DDTHH:MM:SS)。

  • end_time (str) – 结束时间,ISO格式(YYYY-MM-DDTHH:MM:SS)。

  • description (str, optional) – 事件的描述。

  • location (str, optional) – 事件发生的位置。

  • attendees_email (List[str], optional) – 电子邮件地址列表。 (默认值: None)

  • timezone (str, optional) - 事件的时区。 (默认: UTC)

Returns:

一个包含所创建事件详细信息的字典。

Return type:

字典

Raises:

ValueError - 如果事件创建失败。

delete_event(event_id: str) str[来源]#

从用户的主Google日历中删除一个事件。

Parameters:

event_id (str) – 要删除的事件ID。

Returns:

一条指示删除结果的消息。

Return type:

字符串

Raises:

ValueError - 如果事件删除失败。

get_calendar_details() Dict[str, Any][来源]#

获取用户主要Google日历的详细信息。

Returns:

一个包含日历详细信息的字典。

Return type:

字典

Raises:

ValueError - 如果获取日历详情失败。

get_events(max_results: int = 10, time_min: str | None = None) List[Dict[str, Any]] | Dict[str, Any][来源]#

从用户的主Google日历中检索即将发生的事件。

Parameters:
  • max_results (int, optional) – 要检索的事件最大数量。 (默认值: 10)

  • time_min (str, optional) – 获取事件的最小时间。 如果未提供,默认为当前时间。 (default: None)

Returns:

一个包含以下内容的列表

字典,每个字典包含一个事件的详细信息,或者是一个带有错误消息的字典。

Return type:

Union[List[Dict[str, Any]], Dict[str, Any]]

Raises:

ValueError - 如果事件检索失败。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

update_event(event_id: str, event_title: str | None = None, start_time: str | None = None, end_time: str | None = None, description: str | None = None, location: str | None = None, attendees_email: List[str] | None = None) Dict[str, Any][来源]#

更新用户主Google日历中的现有事件。

Parameters:
  • event_id (str) - 要更新的事件ID。

  • event_title (可选[str]) - 事件的新标题。 (默认值: None)

  • start_time (可选[str]) – 新的开始时间,采用ISO格式 (YYYY-MM-DDTHH:MM:SSZ)。 (默认值: None)

  • end_time (Optional[str]) – 新的结束时间,采用ISO格式 (YYYY-MM-DDTHH:MM:SSZ)。 (默认值: None)

  • description (Optional[str]) – 事件的新描述。 (default: None)

  • location (Optional[str]) – 事件的新位置。 (默认值: None)

  • attendees_email (可选[列表[字符串]]) - 电子邮件地址列表。 (默认值: None)

Returns:

包含更新详情的字典

事件。

Return type:

字典[字符串, 任意类型]

Raises:

ValueError - 如果事件更新失败。

class camel.toolkits.GoogleMapsToolkit(timeout: float | None = None)[来源]#

基类: BaseToolkit

一个表示与GoogleMaps API交互工具包的类。 该类提供了使用Google Maps API验证地址、获取海拔高度和获取时区信息的方法。

get_address_description(address: str | List[str], region_code: str | None = None, locality: str | None = None) str[来源]#

通过Google Maps API验证地址,返回描述性摘要。使用Google Maps API验证地址,返回的摘要包括地址补全信息、格式化地址、位置坐标以及适用于给定地址的元数据类型。

Parameters:
  • address (Union[str, List[str]]) – 要验证的地址或组件。可以是单个字符串或表示不同部分的列表。

  • region_code (str, optional) – 用于地区限制的国家代码,有助于缩小结果范围。(默认: None)

  • locality (str, optional) – 将验证限制在特定地区,例如"Mountain View"。(默认值: None)

Returns:

地址验证结果摘要,包括

地址补全信息、格式化地址、地理坐标(纬度和经度)以及该地址对应的元数据类型。

Return type:

字符串

get_elevation(lat: float, lng: float) str[来源]#

获取给定纬度和经度的高程数据。 使用Google Maps API获取指定纬度和经度的高程数据。它能优雅地处理异常情况,并返回高程描述,包括以米为单位的值和数据分辨率。

Parameters:
  • lat (float) – 要查询位置的纬度。

  • lng (float) – 要查询位置的经度。

Returns:

指定位置的海拔高度描述,

包括以米为单位的海拔高度和数据分辨率。如果 无法获取海拔数据,则会返回一条提示信息。

Return type:

字符串

get_timezone(lat: float, lng: float) str[来源]#

获取给定纬度和经度的时区信息。 该函数使用Google Maps Timezone API来获取指定纬度和经度的时区数据。它返回时区的自然语言描述,包括时区ID、名称、标准时间偏移量、夏令时偏移量以及与协调世界时(UTC)的总偏移量。

Parameters:
  • lat (float) – 要查询位置的纬度。

  • lng (float) – 要查询位置的经度。

Returns:

描述时区信息的字符串,

包括时区ID和名称、标准时间偏移量、夏令时偏移量以及与UTC的总偏移量。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.GoogleScholarToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于从Google Scholar检索作者及其出版物信息的工具包。

author_identifier#

作者的Google Scholar网址或要搜索的作者姓名。

Type:

Union[str, None]

is_author_name#

标识该标识符是否为名称的标志。 (默认值: False)

Type:

布尔值

scholarly#

用于查询Google Scholar的学术模块。

Type:

模块

author#

缓存的作者详细信息,允许根据需要手动分配。

Type:

可选[字典[str, 任意类型]]

property author: Dict[str, Any]#

获取作者属性的Getter方法,如果未缓存则获取详细信息。

Returns:

包含作者详情的字典。如果没有数据

可用,则返回空字典。

Return type:

字典[字符串, 任意类型]

get_author_detailed_info() dict[来源]#

获取关于作者的详细信息。

Returns:

一个包含详细信息的字典,关于

作者。

Return type:

字典

get_author_publications() List[str][来源]#

获取作者出版物的标题。

Returns:

该作者发表的出版物标题列表。

Return type:

List[str]

使用arxiv2text工具从给定的PDF URL获取完整的论文内容。

Parameters:

pdf_url (str) – PDF文件的URL。

Returns:

从PDF中提取的全文,如果出现错误则为None

发生错误时。

Return type:

可选[str]

get_publication_by_title(publication_title: str) dict | None[来源]#

根据标题获取特定出版物的详细信息。请注意,此方法无法获取论文的完整内容。

Parameters:

publication_title (str) - 要搜索的出版物标题。

Returns:

一个包含详细信息的字典,关于

找到的出版物;否则为None

Return type:

可选[字典]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.HumanToolkit(timeout: float | None = None)[来源]#

基类: BaseToolkit

一个代表人类交互工具包的类。

ask_human_via_console(question: str) str[来源]#

通过控制台向人类提问。

Parameters:

问题 (str) – 要向人类提出的问题。

Returns:

人类的回答。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

send_message_to_user(message: str) None[来源]#

向用户发送消息,无需等待响应。这将以一种显著的方式输出到标准输出(stdout)。

无论实际用户界面如何,这都保证能触达用户。

Parameters:

消息 (str) – 要发送给用户的消息。

class camel.toolkits.ImageAnalysisToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于全面图像分析和理解的工具包。 该工具包利用具备视觉能力的语言模型来执行这些任务。

ask_question_about_image(image_path: str, question: str, sys_prompt: str | None = None) str[来源]#

使用可选自定义指令回答图像问题。

Parameters:
  • image_path (str) - 本地路径或指向图像文件的URL。

  • question (str) – 关于图像内容的查询。

  • sys_prompt (可选[str]) – 用于分析的自定义系统提示。 (默认: None)

Returns:

基于视觉理解的详细回答

Return type:

字符串

get_tools() List[FunctionTool][来源]#
Returns a list of FunctionTool objects representing the functions

在工具包中。

Returns:

表示工具包中函数的FunctionTool对象列表

工具包中的函数。

Return type:

列表[FunctionTool]

image_to_text(image_path: str, sys_prompt: str | None = None) str[来源]#

生成图像的文本描述,可选择使用自定义提示词。

Parameters:
  • image_path (str) - 本地路径或指向图像文件的URL。

  • sys_prompt (可选[str]) - 用于分析的自定义系统提示。 (默认: None)

Returns:

图像的描述性自然语言。

Return type:

字符串

class camel.toolkits.LinkedInToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示LinkedIn操作工具包的类。

该类提供了创建帖子、删除帖子以及获取认证用户个人资料信息的方法。

create_post(text: str) dict[来源]#

为认证用户在LinkedIn上创建一篇帖子。

Parameters:

text (str) – 要创建的帖子内容。

Returns:

一个包含帖子ID和内容的字典

如果帖子创建失败,这些值将为None。

Return type:

字典

Raises:

异常 - 如果由于LinkedIn API返回错误响应导致帖子创建失败。

delete_post(post_id: str) str[来源]#

删除授权用户指定ID的LinkedIn帖子。

此函数向LinkedIn API发送DELETE请求以删除指定ID的帖子。在发送请求之前,它会提示用户确认删除操作。

Parameters:

post_id (str) – 要删除的帖子的ID。

Returns:

一条指示删除结果的消息。如果

删除成功,该消息包含被删除帖子的ID。如果删除未成功,该消息包含一条错误信息。

Return type:

字符串

Reference:

https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/ugc-post-api

get_profile(include_id: bool = False) dict[来源]#

获取已认证用户的LinkedIn个人资料信息。

该函数向LinkedIn API发送GET请求以获取认证用户的个人资料信息。可选地,它还会返回用户的LinkedIn ID。

Parameters:

include_id (bool) – 是否在响应中包含LinkedIn个人资料ID。

Returns:

包含用户LinkedIn个人资料的字典

信息。如果include_id为True,该字典还将包含个人资料ID。

Return type:

字典

Raises:

异常 - 如果由于LinkedIn API返回错误响应导致个人资料获取失败。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.MCPToolkit(servers: List[MCPClient] | None = None, config_path: str | None = None)[来源]#

基类: BaseToolkit

MCPToolkit 提供了一个统一接口,用于管理多个MCP服务器连接及其工具。

该类负责管理多个MCP服务器连接的生命周期,并为本地和远程MCP服务提供集中式配置机制。

Parameters:
  • servers (Optional[List[MCPClient]]) – 要管理的MCPClient实例列表。

  • config_path (Optional[str]) - 指向定义MCP服务器的JSON配置文件的路径

注意

必须提供serversconfig_path。如果两者都提供,来自这两个源的服务器将被合并。

对于配置文件中的Web服务器,您可以使用"headers"字段指定授权头部信息,以连接到受保护的MCP服务器端点。

示例配置:

{
  "mcpServers": {
    "protected-server": {
      "url": "https://example.com/mcp",
      "timeout": 30,
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN",
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}
servers#

正在管理的MCPClient实例列表。

Type:

列表[MCPClient]

async connect()[来源]#

显式连接到所有MCP服务器。

Returns:

已连接的camel工具实例

Return type:

MCPToolkit

connection() AsyncGenerator[MCPToolkit, None][来源]#

异步上下文管理器,可同时建立与所有托管MCP服务器实例的连接。

Yields:

MCPToolkit – 包含所有已连接服务器的自身。

async disconnect()[来源]#

显式断开与所有MCP服务器的连接。

get_tools() List[FunctionTool][来源]#

聚合来自托管MCP服务器实例的所有工具。

Returns:

所有可用功能工具的综合列表。

Return type:

列表[FunctionTool]

is_connected() bool[来源]#

检查所有托管服务器是否已连接。

Returns:

如果已连接则为True,否则为False。

Return type:

布尔值

class camel.toolkits.MathToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示数学运算工具包的类。

该类提供基本数学运算方法,如加法、减法、乘法、除法及四舍五入。

add(a: float, b: float) float[来源]#

将两个数字相加。

Parameters:
  • a (float) – 要相加的第一个数字。

  • b (float) - 要相加的第二个数字。

Returns:

两个数字的总和。

Return type:

浮点数

divide(a: float, b: float, decimal_places: int = 2) float[来源]#

将两个数相除。

Parameters:
  • a (float) – 除法运算中的被除数。

  • b (float) - 除法运算中的除数。

  • decimal_places (int, optional) – 要四舍五入的小数位数。默认为2。

Returns:

a 除以 b 的结果。

Return type:

浮点数

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

multiply(a: float, b: float, decimal_places: int = 2) float[来源]#

将两个数字相乘。

Parameters:
  • a (float) – 乘法运算中的乘数。

  • b (float) – 乘法运算中的被乘数。

  • decimal_places (int, optional) – 要四舍五入的小数位数。默认为2。

Returns:

两个数字的乘积。

Return type:

浮点数

round(a: float, decimal_places: int = 0) float[来源]#

将数字四舍五入到指定的小数位数。

Parameters:
  • a (float) – 要四舍五入的数字。

  • decimal_places (int, optional) – 要四舍五入到的小数位数。默认为0。

Returns:

四舍五入后的数字。

Return type:

浮点数

sub(a: float, b: float) float[来源]#

对两个数字进行减法运算。

Parameters:
  • a (float) – 减法中的被减数。

  • b (float) – 减法中的减数。

Returns:

a 中减去 b 的结果。

Return type:

浮点数

class camel.toolkits.MemoryToolkit(agent: ChatAgent, timeout: float | None = None)[来源]#

基类: BaseToolkit

一个提供保存、加载和清除ChatAgent内存方法的工具包。 这些方法以FunctionTool对象的形式暴露用于函数调用。内部实现调用了:

  • agent.save_memory(path)

  • agent.load_memory(new_memory_obj)

  • agent.load_memory_from_path(path)

  • agent.clear_memory()

Parameters:
  • agent (ChatAgent) – 将被管理内存的聊天代理。

  • timeout (Optional[float], optional) – 工具包操作允许的最大执行时间,单位为秒。如果为None,则不应用超时限制。(默认值: None)

clear_memory() str[来源]#

清除agent的内存。

Returns:

确认消息。

Return type:

字符串

get_tools() list[FunctionTool][来源]#

将内存管理方法作为功能工具暴露给ChatAgent。

Returns:

FunctionTool对象列表。

Return type:

列表[FunctionTool]

load(memory_json: str) str[来源]#

从JSON字符串将内存加载到代理中。

Parameters:

memory_json (str) – 包含内存记录的JSON字符串。

Returns:

确认或错误信息。

Return type:

字符串

load_from_path(path: str) str[来源]#

从JSON文件加载代理的内存。

Parameters:

path (str) – 用于加载内存的文件路径。

Returns:

确认消息。

Return type:

字符串

save(path: str) str[来源]#

将代理当前的内存保存到JSON文件。

Parameters:

path (str) – 保存内存的文件路径。

Returns:

确认消息。

Return type:

字符串

class camel.toolkits.MeshyToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示使用Meshy进行3D模型生成的工具包类。

该类提供了使用Meshy处理文本/图像生成3D模型的方法。

调用generate_3d_model_complete方法来生成优化后的3D模型。

参考: https://docs.meshy.ai/api-text-to-3d-beta#create-a-text-to-3d-preview-task

generate_3d_model_complete(prompt: str, art_style: str, negative_prompt: str) Dict[str, Any][来源]#

通过处理预览和优化阶段生成完整的3D模型

Parameters:
  • prompt (str) - 对象的描述。

  • art_style (str) - 3D模型的艺术风格。

  • negative_prompt (str) - 模型不应该生成的内容。

Returns:

最终精炼的3D模型响应。

Return type:

字典[字符串, 任意类型]

generate_3d_preview(prompt: str, art_style: str, negative_prompt: str) Dict[str, Any][来源]#

使用Meshy API生成3D预览。

Parameters:
  • prompt (str) - 对象的描述。

  • art_style (str) - 3D模型的艺术风格。

  • negative_prompt (str) - 模型不应该生成的内容。

Returns:

响应中的result属性包含

新创建的Text to 3D任务的任务ID。

Return type:

字典[字符串, 任意类型]

get_task_status(task_id: str) Dict[str, Any][来源]#

使用Meshy API获取特定3D模型生成任务的状态或结果。

Parameters:

task_id (str) – 要检索的任务ID。

Returns:

来自Meshy API的响应。

Return type:

字典[字符串, 任意类型]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

refine_3d_model(preview_task_id: str) Dict[str, Any][来源]#

使用Meshy API优化3D模型。

Parameters:

preview_task_id (str) – 要优化的预览任务ID。

Returns:

来自Meshy API的响应。

Return type:

字典[字符串, 任意类型]

wait_for_task_completion(task_id: str, polling_interval: int = 10, timeout: int = 3600) Dict[str, Any][来源]#

通过轮询任务状态来等待任务完成。

Parameters:
  • task_id (str) - 要监控的任务ID。

  • polling_interval (int) – 状态检查之间的等待秒数。 (默认: 10)

  • timeout (int) – 超时前等待的最大秒数。 (默认: 3600)

Returns:

当任务完成时来自API的最终响应。

Return type:

字典[字符串, 任意类型]

Raises:
  • TimeoutError - 如果任务在超时期限内未完成。

  • RuntimeError - 如果任务失败或被取消。

class camel.toolkits.MinerUToolkit(api_key: str | None = None, api_url: str | None = 'https://mineru.net/api/v4', is_ocr: bool = False, enable_formula: bool = False, enable_table: bool = True, layout_model: str = 'doclayout_yolo', language: str = 'en', wait: bool = True, timeout: float = 300)[来源]#

基类: BaseToolkit

Toolkit for extracting and processing document content

使用MinerU API。

提供全面的文档处理能力,包括从URL和文件中提取内容,通过MinerU API服务支持OCR、公式识别和表格检测。

注意

  • 最大文件大小:每个文件200MB

  • 最大页数:每个文件600页

  • 每日配额:高优先级解析2000页

  • 网络限制可能会影响某些URL(例如GitHub、AWS)

extract_from_urls(urls: str | List[str]) Dict[来源]#

从一个或多个URL处理和提取内容。

Parameters:

urls (str | List[str]) – 用于内容提取的目标URL或URL列表。支持单个URL字符串和列表中的多个URL。

Returns:

响应包含已完成任务结果(当wait为True时)

或者包含用于状态跟踪的任务/批次标识符(当wait为False时)。

Return type:

字典

get_batch_status(batch_id: str) Dict[来源]#

获取批量提取任务的当前状态。

Parameters:

batch_id (str) – 用于检查批量提取任务的唯一标识符

Returns:

批量任务中所有文件的全面状态信息和结果

Return type:

字典

注意

这是一个底层状态检查方法。对于大多数使用场景,建议使用batch_extract_from_urls并设置wait=True以实现自动完成处理。

get_task_status(task_id: str) Dict[来源]#

获取单个提取任务的当前状态。

Parameters:

task_id (str) – 用于检查的提取任务的唯一标识符。

Returns:

指定任务的状态信息和结果(如果任务已完成)

针对该任务。

Return type:

字典

注意

这是一个底层状态检查方法。对于大多数使用场景,建议使用 extract_from_url 并设置 wait=True 以实现自动完成处理。

get_tools() List[FunctionTool][来源]#

检索可用的工具包函数作为FunctionTool对象。

Returns:

表示FunctionTool对象的集合

该工具包中可用的文档处理功能。

Return type:

列表[FunctionTool]

class camel.toolkits.NetworkXToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

add_edge(source: str, target: str, **attributes: Any) None[来源]#

向图中添加一条边。

Parameters:
  • source (str) - 源节点ID。

  • target (str) – 目标节点ID。

  • attributes (dict) - 额外的边属性。

add_node(node_id: str, **attributes: Any) None[来源]#

向图中添加一个节点。

Parameters:
  • node_id (str) - 节点的ID。

  • attributes (dict) - 额外的节点属性。

clear_graph() None[来源]#

清除当前图形。

compute_centrality() Dict[str, float][来源]#

计算图的中心性度量。

Returns:

每个节点的中心性值。

Return type:

字典[str, float]

deserialize_graph(data: str) None[来源]#

从序列化的JSON字符串加载图形。

Parameters:

data (str) – 表示图形的JSON字符串。

export_to_file(file_path: str) None[来源]#

将图形导出为JSON格式的文件。

Parameters:

file_path (str) - 用于保存图形的文件路径。

get_edges() List[Tuple[str, str]][来源]#

返回图中的所有边。

Returns:

边的列表,格式为(源节点, 目标节点)。

Return type:

列表[元组[字符串, 字符串]]

get_nodes() List[str][来源]#

返回图中的所有节点。

Returns:

节点ID列表。

Return type:

List[str]

get_shortest_path(source: str, target: str, weight: str | Callable | None = None, method: Literal['dijkstra', 'bellman-ford'] = 'dijkstra') List[str][来源]#

查找两个节点之间的最短路径。

Parameters:
  • source (str) - 源节点ID。

  • target (str) – 目标节点ID。

  • weight (None, str or function, optional) – 边的权重/距离。 如果是None,每条边的权重/距离/成本为1。 如果是字符串,则使用该边属性作为边的权重。 如果是函数,边的权重是该函数返回的值。 该函数必须接受三个位置参数:两个端点和边属性字典。(默认: None)

  • method (Literal['dijkstra', 'bellman-ford'], optional) – 用于计算路径的算法。如果weight为None则忽略该参数。(默认值: 'dijkstra')

Returns:

最短路径中的节点列表。

Return type:

List[str]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表,用于

工具包方法。

Return type:

列表[FunctionTool]

import_from_file(file_path: str) None[来源]#

从JSON文件导入图形。

Parameters:

file_path (str) – 用于加载图形的文件路径。

serialize_graph() str[来源]#

将图形序列化为JSON字符串。

Returns:

JSON格式的序列化图。

Return type:

字符串

class camel.toolkits.NotionToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于从用户的Notion页面检索信息的工具包。

notion_token#

用于与Notion API交互的notion_token。(默认值: None)

Type:

可选[str],可选

notion_client#

用于与notion API交互的notion模块。

Type:

模块

get_notion_block_text_content(block_id: str) str[来源]#

获取Notion块的文本内容。

Parameters:

block_id (str) – 要检索的Notion块的ID。

Returns:

Notion块中的文本内容,包含所有

子块。

Return type:

字符串

get_text_from_block(block: dict) str[来源]#

根据Notion块的类型提取纯文本。

Parameters:

block (dict) – 表示Notion块的字典。

Returns:

一个包含提取的纯文本和块类型的字符串。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

list_all_pages() List[dict][来源]#

列出Notion工作区中的所有页面。

Returns:

包含标题和ID的页面对象列表。

Return type:

列表[字典]

list_all_users() List[dict][来源]#

通过Notion集成列出所有用户。

Returns:

一个包含类型、名称和工作空间的用户对象列表。

Return type:

列表[字典]

class camel.toolkits.OpenAIAgentToolkit(model: BaseModelBackend | None = None, api_key: str | None = None, timeout: float | None = None)[来源]#

基类: BaseToolkit

用于访问OpenAI代理工具(包括网络搜索和文件搜索)的工具包。

通过Responses API提供对OpenAI网络搜索和文件搜索功能的访问,使代理能够从网络检索信息并搜索上传的文件。

使用OpenAI的文件搜索工具在文件中进行搜索。

Parameters:
  • query (str) – 搜索查询语句。

  • vector_store_id (str) – 要搜索的向量存储ID。

Returns:

搜索结果或错误信息。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

检索可用的工具包函数作为FunctionTool对象。

Returns:

表示FunctionTool对象的集合

该工具包中可用的搜索功能。

Return type:

列表[FunctionTool]

使用OpenAI的网络搜索工具执行网络搜索。

Parameters:

query (str) – 搜索查询。

Returns:

搜索结果或错误信息。

Return type:

字符串

class camel.toolkits.OpenAPIToolkit[来源]#

基类:object

一个表示用于与OpenAPI API交互的工具包的类。

该类提供了基于OpenAPI规范与API交互的方法。它会为OpenAPI规范中定义的每个API操作动态生成函数,允许用户向API端点发起HTTP请求。

apinames_filepaths_to_funs_schemas(apinames_filepaths: List[Tuple[str, str]]) Tuple[List[Callable], List[Dict[str, Any]]][来源]#

将多个OpenAPI规范中的函数和模式组合起来,使用API名称作为键。

该函数遍历API名称和OpenAPI规范文件路径的元组,解析每个规范以生成可调用函数和模式字典,所有内容按API名称组织。

参数: apinames_filepaths (List[Tuple[str, str]]): 一个元组列表,其中

每个元组包含: - 第一个元素是API名称(字符串)。 - 第二个元素是API的OpenAPI规范文件的路径(字符串)。

第二个元素。

Returns:

Tuple[List[Callable], List[Dict[str, Any]]]:: 可调用对象之一

用于API操作的函数集合,以及另一个表示规范中模式的字典集合。

generate_apinames_filepaths() List[Tuple[str, str]][来源]#

生成一个包含API名称及其对应文件路径的元组列表。

该函数遍历OpenAPIName枚举,为每个API的OpenAPI规范文件构建文件路径,并将API名称及其文件路径的元组追加到列表中。文件路径是相对于与脚本同目录下的'open_api_specs'目录的。

Returns:

一个元组列表,其中每个元组包含

两个元素。每个元组的第一个元素是表示API名称的字符串,第二个元素是指定该API的OpenAPI规范文件路径的字符串。

Return type:

列表[元组[字符串, 字符串]]

generate_openapi_funcs(api_name: str, openapi_spec: Dict[str, Any]) List[Callable][来源]#

根据OpenAPI规范生成Python函数列表。

该函数动态生成一个可调用函数的列表,这些函数代表OpenAPI规范文档中定义的API操作。每个函数设计用于执行规范中定义的对应API操作(如GET、POST)的HTTP请求。这些函数通过openapi_function_decorator装饰器进行修饰,该装饰器配置它们以构建并发送带有适当参数、头部和正文内容的HTTP请求。

Parameters:
  • api_name (str) – API的名称,用于为生成的函数名称添加前缀。

  • openapi_spec (Dict[str, Any]) – 以字典形式表示的OpenAPI规范。

Returns:

包含生成函数的列表。每个

函数在被调用时,将根据OpenAPI规范中定义的对应API操作发起HTTP请求。

Return type:

列表[可调用对象]

Raises:

ValueError – 如果OpenAPI规范不包含服务器信息,这些信息是确定API请求基础URL所必需的。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

openapi_function_decorator(api_name: str, base_url: str, path: str, method: str, openapi_security: List[Dict[str, Any]], sec_schemas: Dict[str, Dict[str, Any]], operation: Dict[str, Any]) Callable[来源]#

装饰一个函数以基于OpenAPI规范详情发起HTTP请求。

该装饰器根据提供的OpenAPI操作规范、安全要求和参数,动态构建并执行API请求。它支持使用apiKey类型安全方案保护的操作,并自动从环境变量中注入必要的API密钥。同时支持pathqueryheadercookie中的参数。

Parameters:
  • api_name (str) - API的名称,用于从配置中检索API密钥名称和URL。

  • base_url (str) - API的基础URL。

  • path (str) – API端点的路径,相对于基础URL。

  • method (str) – HTTP请求的方法(例如:'get'、'post')。

  • openapi_security (List[Dict[str, Any]]) – OpenAPI规范中定义的全局安全配置。

  • sec_schemas (Dict[str, Dict[str, Any]]) - 详细的安全方案。

  • operation (Dict[str, Any]) – 一个包含OpenAPI操作详情的字典,包括参数和请求体定义。

Returns:

一个装饰器,当应用于函数时,能够

使函数根据提供的OpenAPI操作细节发起HTTP请求。

Return type:

可调用

Raises:
  • TypeError - 如果安全要求包含不受支持的类型。

  • ValueError - 如果环境变量中缺少必需的API密钥,或者请求正文的内容类型不受支持。

openapi_spec_to_openai_schemas(api_name: str, openapi_spec: Dict[str, Any]) List[Dict[str, Any]][来源]#

将OpenAPI规范转换为OpenAI模式格式。

该函数遍历OpenAPI规范中定义的路径和操作,过滤掉已弃用的操作。对于每个操作,它会构建一个适合OpenAI格式的模式,包括操作元数据如函数名称、描述、参数和请求体。如果操作缺少描述或摘要,则会引发ValueError。

Parameters:
  • api_name (str) – API的名称,用于为生成的函数名称添加前缀。

  • openapi_spec (Dict[str, Any]) – 以字典形式表示的OpenAPI规范。

Returns:

一个字典列表,每个字典代表一个

符合OpenAI模式格式的函数,包含有关函数名称、描述和参数的详细信息。

Return type:

List[Dict[str, Any]]

Raises:

ValueError – 如果OpenAPI规范中的操作没有描述或摘要。

注意

该函数假设OpenAPI规范遵循3.0+格式。

Reference:

https://swagger.io/specification/

parse_openapi_file(openapi_spec_path: str) Dict[str, Any] | None[来源]#

加载并解析一个OpenAPI规范文件。

该函数利用prance.ResolvingParser来解析并解析给定的OpenAPI规范文件,返回解析后的OpenAPI规范作为字典。

Parameters:

openapi_spec_path (str) – OpenAPI规范的文件路径或URL。

Returns:

解析后的OpenAPI规范

以字典形式呈现。如果未安装该包则为None

Return type:

可选[字典[str, 任意类型]]

class camel.toolkits.OpenBBToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个通过OpenBB平台访问金融数据和分析的工具包。

该工具包提供通过OpenBB平台SDK获取和分析金融市场数据的方法,包括股票、ETF、加密货币、经济指标等。有关凭证配置,请参考OpenBB文档https://my.openbb.co/app/platform/credentials

get_available_indicators(provider: Literal['econdb', 'imf'] = 'econdb') List[来源]#

获取可用经济指标列表。

Parameters:

provider (Literal["econdb", "imf"]) – 数据提供商。 (默认: econdb)

Returns:

可用指标。

Return type:

列表

get_available_indices(provider: Literal['fmp', 'yfinance'] = 'fmp') List[来源]#

获取可用市场指数的列表。

Parameters:

provider (Literal["fmp", "yfinance"]) – 数据提供商。 (默认: fmp)

Returns:

可用索引。

Return type:

列表

get_company_profile(symbol: str, provider: Literal['fmp', 'intrinio', 'yfinance'] = 'fmp') List[来源]#

获取公司简介信息。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)。

  • provider (Literal["fmp", "intrinio", "yfinance"]) – 数据提供商。 (默认: fmp)

Returns:

公司简介。

Return type:

列表

get_dividend_calendar(start_date: str | None = None, end_date: str | None = None) List[来源]#

获取股息日历,可选择计算收益率。

Parameters:
  • start_date (可选[str]) – 起始日期,格式为YYYY-MM-DD。 (默认值: None)

  • end_date (Optional[str]) – 结束日期,格式为YYYY-MM-DD。(默认值: None

Returns:

股息日历。

Return type:

列表

get_earnings_calendar(start_date: str | None = None, end_date: str | None = None) List[来源]#

获取公司财报日历,提供筛选和排序选项。

Parameters:
  • start_date (Optional[str]) – 开始日期,格式为YYYY-MM-DD。 (默认: None)

  • end_date (Optional[str]) – 结束日期,格式为YYYY-MM-DD。(默认值: None)

Returns:

盈利日历。

Return type:

列表

get_economic_calendar(provider: Literal['fmp', 'tradingeconomics'] = 'fmp', start_date: str | None = None, end_date: str | None = None) List[来源]#

获取经济日历事件。

Parameters:
  • provider (Literal["fmp", "tradingeconomics"]) – 数据提供商。 (默认: fmp)

  • start_date (可选[str]) – 以YYYY-MM-DD格式表示的起始日期。 (默认值: None)

  • end_date (Optional[str]) – 结束日期,格式为YYYY-MM-DD。(默认值: None)

Returns:

经济日历。

Return type:

列表

get_financial_attributes(symbol: str, tag: str, frequency: Literal['daily', 'weekly', 'monthly', 'quarterly', 'yearly'] = 'yearly') List[来源]#

获取特定财务属性的历史数值。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)。

  • tag (str) – 财务属性标签(使用search_financial_attributes来查找标签)。

  • (Literal["daily" (频率) – “yearly”]): 数据频率,可选"daily"、"weekly"、"monthly"、"quarterly"、"yearly"。(默认: yearly)

  • "weekly" – “yearly”]): 数据频率,"daily"(每日), "weekly"(每周), "monthly"(每月), "quarterly"(每季度), "yearly"(每年)。 (默认: yearly)

  • "monthly" – “yearly”]): 数据频率,"daily"(每日)、"weekly"(每周)、"monthly"(每月)、 "quarterly"(每季度)、"yearly"(每年)。(默认: yearly)

  • "quarterly" – “yearly”]): 数据频率,"daily"(每日)、"weekly"(每周)、"monthly"(每月)、"quarterly"(每季度)、"yearly"(每年)。(默认: yearly)

:param“yearly”]): Data frequency, “daily”, “weekly”, “monthly”,

“quarterly”, “yearly”。(默认:yearly

Returns:

历史数值。

Return type:

列表

get_financial_metrics(symbol: str, provider: Literal['fmp', 'intrinio', 'yfinance'] = 'fmp', period: Literal['annual', 'quarter'] = 'annual', limit: int = 5) List[来源]#

获取公司财务指标和比率。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)。

  • provider (Literal["fmp", "intrinio", "yfinance"]) – 数据源。 (默认: fmp)

  • period (Literal["annual", "quarter"]) – 报告周期,"annual":年度指标,"quarter":季度指标。(默认值:annual

  • limit (int) – 要返回的周期数。(默认: 5)

Returns:

财务指标。

Return type:

列表

get_financial_statement(symbol: str, provider: Literal['fmp', 'intrinio', 'polygon', 'yfinance'] = 'fmp', statement_type: Literal['balance', 'income', 'cash'] = 'balance', period: Literal['annual', 'quarter'] = 'annual', limit: int = 5) List[来源]#

获取公司财务报表。

访问资产负债表、利润表或现金流量表数据。 数据可用性和字段名称因数据提供商和公司类型而异。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)。

  • provider (Literal["fmp", "intrinio", "polygon", "yfinance"]) – 数据提供者。(默认: fmp)

  • statement_type (Literal["balance", "income", "cash"]) – 财务报表类型,"balance": 资产负债表,"income": 利润表,"cash": 现金流量表 (默认值: balance)

  • period (Literal["annual", "quarter"]) – 报告周期,"annual": 年度报告, "quarter": 季度报告。(默认值: annual)

  • limit (int) – 要返回的周期数。(默认: 5)

Returns:

财务报表数据。

Return type:

列表

get_historical_data(symbol: str, provider: Literal['fmp', 'polygon', 'tiingo', 'yfinance'] = 'fmp', asset_type: Literal['equity', 'currency', 'crypto'] = 'equity', start_date: str | None = None, end_date: str | None = None, interval: Literal['1m', '5m', '15m', '30m', '1h', '4h', '1d'] = '1d') List[来源]#

从OpenBB平台提供商获取历史市场数据。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)。

  • provider (Literal["fmp", "polygon", "tiingo", "yfinance"]) – 数据源。(默认: fmp)

  • asset_type (Literal["equity", "currency", "crypto"]) – 资产类型。 (默认值: equity)

  • start_date – 开始日期,格式为YYYY-MM-DD。如果为None,则使用提供商的默认回溯期。(默认: None)

  • end_date – 结束日期,格式为YYYY-MM-DD。如果为None,则使用当前日期。(默认: None)

  • interval – 数据频率/时间框架。(默认: 1d)

Returns:

历史市场数据。

Return type:

列表

get_indicator_data(symbol: str, country: str, provider: Literal['econdb', 'imf'] = 'econdb') List[来源]#

获取经济指标的详细元数据。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)。

  • country (str) – 国家代码(例如,'US'代表美国)。

  • provider (Literal["econdb", "imf"]) – 数据提供商。(默认: econdb)

Returns:

指标数据。

Return type:

列表

get_ipo_calendar(start_date: str | None = None, end_date: str | None = None) List[来源]#

获取包含全面筛选选项的IPO/SPO日历。

Parameters:
  • start_date (可选[str]) – 以YYYY-MM-DD格式表示的起始日期。 (默认值: None)

  • end_date (Optional[str]) – 结束日期,格式为YYYY-MM-DD。(默认值: None)

Returns:

IPO/SPO日历。

Return type:

列表

get_market_data(category: Literal['gainers', 'losers', 'active'] = 'active') List[来源]#

获取市场变动数据。

Parameters:

category (Literal["gainers", "losers", "active"]) – 市场数据类型。必须是'gainers'、'losers'或'active'。(默认值: active)

Returns:

市场变动数据。

Return type:

列表

get_stock_quote(symbol: str, provider: Literal['fmp', 'intrinio', 'yfinance'] = 'fmp') List[来源]#

获取给定股票代码的当前报价。

Parameters:
  • symbol (str) – 股票代码(例如,'AAPL'代表苹果公司)

  • provider (Literal["fmp", "intrinio", "yfinance"]) – 数据源。 (默认: fmp)

Returns:

请求格式的股票报价数据

Return type:

列表

get_tools() List[FunctionTool][来源]#

返回可用的OpenBB金融工具列表。

Returns:

可用工具列表。

Return type:

列表[FunctionTool]

screen_market(provider: Literal['fmp', 'yfinance'] = 'fmp', country: str | None = None, exchange: str | None = None, sector: str | None = None, industry: str | None = None, mktcap_min: float | None = None, mktcap_max: float | None = None, beta_min: float | None = None, beta_max: float | None = None) List[来源]#

根据市场和基本面标准筛选股票。

Parameters:
  • provider (Literal["fmp", "yfinance"]) – 数据提供者。 (默认: fmp)

  • country (可选[str]) – 两位字母的ISO国家代码(例如'US'、'IN'、'CN')。(默认值: None)

  • exchange (可选[str]) – 股票交易所代码(例如'NYSE', 'AMEX', 'NSE')。(默认: None)

  • sector (可选[str]) - 市场行业(例如:'金融服务'、'医疗保健')。(默认值:None)

  • industry (可选[str]) – 行业细分领域(例如: '区域性银行'、'制药公司')。(默认值: None)

  • mktcap_min (可选[float]) - 以美元计的最小市值。 (默认值: None)

  • mktcap_max (可选[float]) – 以美元计的最大市值。 (默认: None)

  • beta_min (可选[float]) – 最小beta值。 (默认值: None)

  • beta_max (可选[float]) - 最大beta值。 (默认: None)

Returns:

筛选过的股票。

Return type:

列表

search_equity(query: str, provider: Literal['intrinio', 'sec'] = 'sec') List[来源]#

搜索股票代码和公司信息。

对于SEC提供商,空查询(“”)返回按市值排序的完整公司列表。

Parameters:
  • query (str) – 搜索查询(公司名称或股票代码),使用""获取完整的SEC列表。

  • provider (Literal["intrinio", "sec"]) – 数据提供商。可用选项: - sec: SEC EDGAR数据库(按市值排序) - intrinio: Intrinio金融数据

Returns:

搜索结果。

Return type:

列表

search_etf(query: str, provider: Literal['fmp', 'intrinio'] = 'fmp') List[来源]#

搜索ETF信息。

Parameters:
  • query (str) – 搜索查询(ETF名称或代码)。

  • provider (Literal["fmp", "intrinio"]) – 数据提供方。(默认: fmp)

Returns:

ETF 搜索结果。

Return type:

列表

search_filings(symbol: str, provider: Literal['fmp', 'intrinio', 'sec'] = 'sec', form_type: str | None = None) List[来源]#

通过CIK或股票代码搜索SEC文件。

Parameters:
  • symbol (str) – 要获取数据的股票代码(例如"MAXD")。

  • provider (Literal["fmp", "intrinio", "sec"]) – 数据提供商。 (默认: sec)

  • form_type (可选[str]) - 按表单类型过滤。检查数据提供者以获取可用类型。对于提供者(如sec),允许多个逗号分隔项。(默认: None)

Returns:

文件搜索结果。

Return type:

列表

search_financial_attributes(query: str) List[来源]#

搜索可用的财务属性/标签。

Parameters:

query (str) – 搜索词(例如:"marketcap"、"revenue"、"assets")。

Returns:

匹配属性。

Return type:

列表

search_institution(query: str) List[来源]#

在SEC数据库中搜索金融机构。

Parameters:

query (str) – 要搜索的机构名称(例如:"Berkshire Hathaway")。

Returns:

机构搜索结果。

Return type:

列表

class camel.toolkits.PubMedToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于与PubMed的E-utilities API交互以访问MEDLINE数据的工具包。

该工具包提供从PubMed数据库搜索和检索论文的功能,包括摘要、引用和其他元数据。

Parameters:

timeout (可选[float]) – API请求的超时时间,单位为秒。 (默认值: None)

BASE_URL = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils'#
get_abstract(paper_id: str | int) str[来源]#

从MEDLINE/PubMed获取特定生物医学论文的摘要。

Parameters:

paper_id (Union[str, int]) – 论文的PubMed ID。

Returns:

摘要文本。

Return type:

字符串

get_citation_count(paper_id: str | int) int[来源]#

获取MEDLINE/PubMed中生物医学论文的引用次数。

Parameters:

paper_id (Union[str, int]) - 论文的PubMed ID。

Returns:

引用次数,如果检索失败则为0。

Return type:

int

get_paper_details(paper_id: str | int, include_references: bool = False) Dict[str, Any] | None[来源]#

从MEDLINE/PubMed获取特定生物医学论文的详细信息。

Parameters:
  • paper_id (Union[str, int]) - 论文的PubMed ID。

  • include_references (bool, optional) – 是否包含被引用的论文。(默认: False)

Returns:

论文详情包括标题、作者、

摘要等,如果检索失败则为None。

Return type:

可选[字典[str, 任意类型]]

获取与MEDLINE/PubMed中特定论文相关的生物医学论文。

Parameters:
  • paper_id (Union[str, int]) - 论文的PubMed ID。

  • max_results (int, optional) – 要返回的最大结果数量。 (默认值: 10)

Returns:

相关论文及其元数据列表。

Return type:

List[Dict[str, Any]]

get_tools() List[FunctionTool][来源]#

返回由PubMed工具包提供的工具列表。

Returns:

可用工具列表。

Return type:

列表[FunctionTool]

search_papers(query: str, max_results: int = 10, sort: str = 'relevance', date_range: Dict[str, str] | None = None, publication_type: List[str] | None = None) List[Dict[str, str]][来源]#

通过PubMed的高级筛选选项搜索MEDLINE中的生物医学论文。

Parameters:
  • query (str) – 搜索查询字符串。

  • max_results (int, optional) – 要返回的最大结果数量。 (默认值: 10)

  • sort (str, optional) – 排序顺序 - 'relevance'(相关性)或'date'(日期)。 (默认值: "relevance")

  • date_range (Optional[Dict[str, str]], optional) – 日期范围过滤器,使用'from'和'to'日期,格式为YYYY/MM/DD。 (default: None)

  • publication_type (Optional[List[str]], optional) – 按出版物类型筛选(例如:[“Journal Article”, “Review”])。 (默认值: None)

Returns:

包含论文元数据的论文列表。

Return type:

List[Dict[str, str]]

class camel.toolkits.RedditToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个代表Reddit操作工具包的类。

该工具包提供了与Reddit API交互的方法,允许用户收集热门帖子、对评论进行情感分析,并跟踪多个子版块中的关键词讨论。

retries#

API请求失败时的重试次数。

Type:

int

delay#

重试之间的延迟时间(以秒为单位)。

Type:

浮点数

reddit#

Reddit客户端的一个实例。

Type:

Reddit

collect_top_posts(subreddit_name: str, post_limit: int = 5, comment_limit: int = 5) List[Dict[str, Any]] | str[来源]#

收集指定子版块的热门帖子及其评论。

Parameters:
  • subreddit_name (str) – 要从中收集帖子的subreddit名称。

  • post_limit (int) – 要收集的热门帖子最大数量。默认为5

  • comment_limit (int) – 每篇帖子收集的热门评论的最大数量。默认为5

Returns:

一个字典列表,每个

包含帖子标题及其热门评论(如果成功)。 如果凭据未设置则显示字符串警告。

Return type:

Union[List[Dict[str, Any]], str]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表,用于

工具包方法。

Return type:

列表[FunctionTool]

perform_sentiment_analysis(data: List[Dict[str, Any]]) List[Dict[str, Any]][来源]#

对从Reddit帖子收集的评论进行情感分析。

Parameters:

data (List[Dict[str, Any]]) – 包含Reddit帖子和评论数据的字典列表。

Returns:

原始数据添加了每条评论的‘情感

评分’。

Return type:

List[Dict[str, Any]]

track_keyword_discussions(subreddits: List[str], keywords: List[str], post_limit: int = 10, comment_limit: int = 10, sentiment_analysis: bool = False) List[Dict[str, Any]] | str[来源]#

追踪指定子版块中关于特定关键词的讨论。

Parameters:
  • subreddits (List[str]) – 要在其中搜索的subreddit名称列表。

  • keywords (List[str]) – 用于跟踪子论坛讨论中的关键词列表

  • post_limit (int) – 每个subreddit收集的热门帖子最大数量。默认为10

  • comment_limit (int) – 每篇帖子收集的热门评论的最大数量。默认为 10

  • sentiment_analysis (bool) – 如果为True,将对评论进行情感分析。默认为False

Returns:

字典列表

包含子版块名称、帖子标题、评论内容以及每个包含指定关键词评论的点赞数(如果成功)。如果凭据未设置则返回字符串警告。

Return type:

Union[List[Dict[str, Any]], str]

class camel.toolkits.RetrievalToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示信息检索工具包的类。

该类提供了基于指定查询从本地向量存储系统中检索信息的方法。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

information_retrieval(query: str, contents: str | List[str], top_k: int = 1, similarity_threshold: float = 0.7) str[来源]#

从本地向量存储中根据指定查询检索信息。该函数连接到本地向量存储系统,并通过处理输入查询来获取相关信息。当问题的答案需要依赖外部知识源时,使用此函数至关重要。

Parameters:
  • query (str) – 需要回答的问题或查询。

  • contents (Union[str, List[str]]) - 本地文件路径、远程URL或字符串内容。

  • top_k (int, optional) – 在检索过程中返回的顶部结果数量。必须为正整数。默认为DEFAULT_TOP_K_RESULTS

  • similarity_threshold (float, optional) – 用于过滤结果的相似度阈值。默认为 DEFAULT_SIMILARITY_THRESHOLD

Returns:

查询返回的信息,经过汇总

并格式化为字符串。

Return type:

字符串

示例

# 获取关于CAMEL AI的信息。 information_retrieval(query = "如何为CAMEL AI做贡献?",

contents=”camel-ai/camel”)

class camel.toolkits.SearchToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个代表网页搜索工具包的类。

该类提供了使用搜索引擎(如Google、DuckDuckGo、Wikipedia、Wolfram Alpha和Brave)在网络上搜索信息的方法。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

query_wolfram_alpha(query: str, is_detailed: bool = False) str | Dict[str, Any][来源]#

查询Wolfram|Alpha并返回结果。Wolfram|Alpha是由Wolfram Research开发的答案引擎。它作为一项在线服务提供,通过从外部来源数据计算答案来回答事实查询。

Parameters:
  • query (str) – 要发送给Wolfram Alpha的查询语句。

  • is_detailed (bool) - 是否在结果中包含包括逐步信息在内的额外细节。 (默认: False)

Returns:

Wolfram Alpha返回的结果。

如果is_detailed为False则返回字符串,否则返回包含详细信息的字典。

Return type:

Union[str, Dict[str, Any]]

search_baidu(query: str, max_results: int = 5) Dict[str, Any][来源]#

通过网页抓取方式使用百度搜索获取相关搜索结果。该方法查询百度的搜索引擎并提取包括标题、描述和URL在内的搜索结果。

Parameters:
  • query (str) – 要提交给百度的搜索查询字符串。

  • max_results (int) – 返回结果的最大数量。 (默认值: 5)

Returns:

包含搜索结果或错误的字典

消息。

Return type:

字典[字符串, 任意类型]

search_bing(query: str, max_results: int = 5) Dict[str, Any][来源]#

使用Bing搜索引擎搜索给定查询的信息。

该函数通过网页抓取查询中文版必应搜索引擎(cn.bing.com),获取相关搜索结果。它会提取包括标题、摘要和URL在内的搜索结果。当查询内容为中文或需要中文搜索结果时,此函数特别有用。

Parameters:
  • query (str) – 要提交给Bing的搜索查询字符串。对于中文查询或需要中文结果时效果最佳。

  • max_results (int) – 返回结果的最大数量。 (默认值: 5)

Returns:

包含以下任一内容的字典:
  • 'results': 字典列表,每个字典包含:
    • 'result_id': 结果的索引。

    • 'snippet': 搜索结果的简要描述。

    • 'title': 搜索结果的标题。

    • 'link': 搜索结果的URL。

  • 或 'error': 如果出错时的错误信息。

Return type:

字典 ([字符串, 任意类型])

search_bocha(query: str, freshness: str = 'noLimit', summary: bool = False, count: int = 10, page: int = 1) Dict[str, Any][来源]#

查询Bocha AI搜索API并返回搜索结果。

Parameters:
  • query (str) – 搜索查询语句。

  • freshness (str) – 用于筛选搜索结果的时间范围。默认为"noLimit"。可选选项包括: - 'noLimit': 无限制(默认)。 - 'oneDay': 过去一天。 - 'oneWeek': 过去一周。 - 'oneMonth': 过去一个月。 - 'oneYear': 过去一年。

  • summary (bool) – 是否在结果中包含文本摘要。默认为False。

  • count (int) – 要返回的结果数量(1-50)。默认值为10。

  • page (int) – 结果的页码。默认为1。

Returns:

包含搜索结果的字典,包括

网页、图片和视频(如果有的话)。该结构遵循Bocha AI搜索API响应格式。

Return type:

字典[字符串, 任意类型]

search_brave(q: str, country: str = 'US', search_lang: str = 'en', ui_lang: str = 'en-US', count: int = 20, offset: int = 0, safesearch: str = 'moderate', freshness: str | None = None, text_decorations: bool = True, spellcheck: bool = True, result_filter: str | None = None, goggles_id: str | None = None, units: str | None = None, extra_snippets: bool | None = None, summary: bool | None = None) Dict[str, Any][来源]#

该函数查询Brave搜索引擎API并返回一个字典,表示搜索结果。 详情请参阅https://api.search.brave.com/app/documentation/web-search/query

Parameters:
  • q (str) – 用户的搜索查询词。查询不能为空。查询最多400个字符和50个单词。

  • country (str) – 搜索结果来源的查询国家。 国家字符串仅限于2个字符的国家代码, 支持的国家列表。有关支持的值列表,请参阅 国家代码。(默认: :obj:`US `)

  • search_lang (str) – 搜索语言偏好。用于提供搜索结果的2个或更多字符的语言代码。有关可能值的列表,请参阅语言代码。

  • ui_lang (str) – 响应中首选的用户界面语言。 通常格式为'<语言代码>-<国家代码>'。 更多信息请参阅RFC 9110。有关支持的值列表,请参见UI语言代码。

  • count (int) – 返回的搜索结果数量。 最大值为20。实际返回数量可能少于请求数量。 将此参数与offset结合使用可实现搜索结果分页。

  • offset (int) – 基于零的偏移量,表示在返回结果前要跳过的每页搜索结果数量(计数)。最大值为9。实际返回数量可能少于请求值,具体取决于查询条件。要实现分页效果,请将此参数与count参数配合使用。例如,如果您的用户界面每页显示20个搜索结果,设置count为20且offset为0可显示第一页结果。要获取后续页面,将offset每次递增1(如0,1,2)。不同页面之间的结果可能存在重叠。

  • safesearch (str) –

    过滤搜索结果中的成人内容。 支持以下值: - 'off': 不进行任何过滤。 - 'moderate': 过滤露骨内容,如图片和视频,

    但允许搜索结果中出现成人域名。

    • 'strict': 从搜索结果中移除所有成人内容。

  • freshness (可选[str]) –

    按发现时间筛选搜索结果: - 'pd':过去24小时内发现的。 - 'pw':过去7天内发现的。 - 'pm':过去31天内发现的。 - 'py':过去365天内发现的。 - 'YYYY-MM-DDtoYYYY-MM-DD':也支持通过

    指定日期范围来设置时间段,例如'2022-04-01to2022-07-30'。

  • text_decorations (bool) - 是否在显示字符串(例如结果片段)中包含装饰标记(例如高亮字符)。

  • spellcheck (bool) – 是否对提供的查询进行拼写检查。如果启用了拼写检查器,修改后的查询将始终用于搜索。修改后的查询可以在查询响应模型的altered键中找到。

  • result_filter (可选[str]) - 一个用逗号分隔的字符串,用于指定要在搜索结果响应中包含的结果类型。如果不指定此参数,将返回所有可获得数据且订阅了相应选项计划的结果类型。响应始终包含query和type,分别用于标识任何查询修改和响应类型。可用的结果过滤值包括: - 'discussions' - 'faq' - 'infobox' - 'news' - 'query' - 'summarizer' - 'videos' - 'web' - 'locations'

  • goggles_id (可选[str]) – Goggles 作为在 Brave 搜索索引之上的自定义重新排序工具。更多详情,请参考 Goggles 代码库。

  • units (可选[str]) – 测量单位。如果未提供,单位将从搜索国家/地区派生。可能的值为: - 'metric':标准公制单位系统 - 'imperial':英制单位系统

  • extra_snippets (Optional[bool]) – 片段是从查询结果页面中获取的摘录,而extra_snippets允许您获取最多5个额外的备选摘录。仅适用于Free AI、Base AI、Pro AI、Base Data、Pro Data和Custom套餐。

  • summary (可选[bool]) – 此参数用于在网页搜索结果中生成摘要关键词。这是启用摘要功能所必需的。

Returns:

表示搜索结果的字典。

Return type:

字典[字符串, 任意类型]

search_duckduckgo(query: str, source: str = 'text', max_results: int = 5) List[Dict[str, Any]][来源]#

使用DuckDuckGo搜索引擎搜索给定查询的信息。

该函数查询DuckDuckGo API获取与给定搜索词相关的主题。结果会被格式化为一个字典列表,每个字典代表一个搜索结果。

Parameters:
  • query (str) – 要搜索的查询语句。

  • source (str) – 要查询的信息类型(例如:"text"、"images"、"videos")。默认为"text"。

  • max_results (int) – 最大结果数量,默认为5

Returns:

一个字典列表,其中每个字典

代表一个搜索结果。

Return type:

List[Dict[str, Any]]

search_exa(query: str, search_type: Literal['auto', 'neural', 'keyword'] = 'auto', category: Literal['company', 'research paper', 'news', 'pdf', 'github', 'tweet', 'personal site', 'linkedin profile', 'financial report'] | None = None, num_results: int = 10, include_text: List[str] | None = None, exclude_text: List[str] | None = None, use_autoprompt: bool = True, text: bool = False) Dict[str, Any][来源]#

使用Exa搜索API执行智能网络搜索,可选择内容提取。

Parameters:
  • query (str) – 搜索查询字符串。

  • search_type (Literal["auto", "neural", "keyword"]) – 要执行的搜索类型。"auto"会自动在关键词搜索和神经搜索之间做出选择。(默认值: "auto")

  • category (可选[Literal]) – 用于聚焦搜索的类别,例如"研究论文"或"新闻"。(默认: None)

  • num_results (int) – 要返回的结果数量(最多100个)。 (默认值: 10)

  • include_text (可选[列表[字符串]]) – 必须出现在网页文本中的字符串。限制为1个最多5个单词的字符串。 (默认值: None)

  • exclude_text (Optional[List[str]]) – 网页文本中必须不包含的字符串。限制为最多5个单词的1个字符串。 (default: None)

  • use_autoprompt (bool) – 是否使用Exa的autoprompt功能来增强查询。(默认: True)

  • text (bool) – 是否在结果中包含网页内容。 (默认: False)

Returns:

包含搜索结果和元数据的字典:
  • requestId (str): 请求的唯一标识符

  • autopromptString (str): 如果启用则生成的自动提示

  • autoDate (str): 自动提示生成的时间戳

  • resolvedSearchType (str): 实际使用的搜索类型

  • results (List[Dict]): 带有元数据的搜索结果列表

  • searchType (str): 被选中的搜索类型

  • costDollars (Dict): API费用的明细

Return type:

字典[字符串, 任意类型]

search_google(query: str, num_result_pages: int = 5) List[Dict[str, Any]][来源]#

使用Google搜索引擎搜索给定查询的信息。

Parameters:
  • query (str) – 要搜索的查询语句。

  • num_result_pages (int) – 要检索的结果页数。

Returns:

一个字典列表,其中每个字典代表一个网站。

每个字典包含以下键: - 'result_id': 顺序编号。 - 'title': 网站标题。 - 'description': 网站简要描述。 - 'long_description': 网站更多详细信息。 - 'url': 网站URL。

示例: {

'result_id': 1, 'title': 'OpenAI', 'description': '一个致力于确保人工通用智能造福全人类的组织。', 'long_description': 'OpenAI是一家非营利性人工智能研究公司。我们的目标是以最有可能造福全人类的方式推进数字智能', 'url': 'https://www.openai.com'

}

网站的标题、描述和URL。

Return type:

List[Dict[str, Any]]

search_linkup(query: str, depth: Literal['standard', 'deep'] = 'standard', output_type: Literal['searchResults', 'sourcedAnswer', 'structured'] = 'searchResults', structured_output_schema: str | None = None) Dict[str, Any][来源]#

在Linkup API中搜索查询并以多种格式返回结果。

Parameters:
  • query (str) – 搜索查询语句。

  • depth (Literal["standard", "deep"]) – 搜索的深度。 "standard"表示简单搜索,"deep"表示更全面的搜索。

  • (Literal["searchResults" (output_type) – “structured”]): 输出类型: - "searchResults"表示原始搜索结果, - "sourcedAnswer"表示带有支持来源的答案, - "structured"表示基于提供的模式输出。

  • "sourcedAnswer" – "structured"]): 输出类型: - "searchResults" 表示原始搜索结果, - "sourcedAnswer" 表示带有支持来源的答案, - "structured" 表示基于提供的模式输出。

:param“structured”]): The type of output:
  • "searchResults" 表示原始搜索结果,

  • "sourcedAnswer"表示带有支持来源的答案,

  • "structured"表示基于提供的模式输出。

Parameters:

structured_output_schema (可选[str]) – 如果output_type是 "structured",则指定输出的模式。必须是一个 表示有效对象JSON模式的字符串。

Returns:

表示搜索结果的字典。

结构取决于output_type。如果发生错误,将返回错误信息。

Return type:

字典[字符串, 任意类型]

search_wiki(entity: str) str[来源]#
Search the entity in WikiPedia and return the summary of the

必填页面,包含有关给定实体的真实信息。

Parameters:

entity (str) – 要搜索的实体。

Returns:

搜索结果。如果该实体对应的页面

存在,则以字符串形式返回该实体的摘要。

Return type:

字符串

使用Tavily搜索API为给定查询搜索信息。

Parameters:
  • query (str) – 要搜索的查询语句。

  • num_results (int) – 要检索的搜索结果数量(默认为5)。

  • **kwargs

    Tavily API支持的其他可选参数: - search_depth (str): "basic"或"advanced"搜索深度。 - topic (str): 搜索类别,例如"general"或"news"。 - days (int): 新闻相关搜索的时间范围(天数)。 - max_results (int): 返回的最大结果数量

    (覆盖num_results)。

    详情请参阅https://docs.tavily.com/docs/python-sdk/tavily-search/ api-reference。

Returns:

表示搜索结果的字典列表

每个字典包含: - 'result_id' (int): 结果的索引编号 - 'title' (str): 结果的标题 - 'description' (str): 结果的简要描述 - 'long_description' (str): 详细信息(如果有) - 'url' (str): 结果的URL链接 - 'content' (str): 搜索结果中的相关内容 - 'images' (list): 相关图片列表(如果

include_images为True时显示)

  • 'published_date' (str): 新闻主题的发布日期(如果有)

Return type:

List[Dict[str, Any]]

class camel.toolkits.SearxNGToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个使用SearxNG搜索引擎执行网络搜索的工具包。

该工具包提供了使用SearxNG(一个注重隐私的元搜索引擎)进行网络搜索的方法。它支持可定制的搜索参数和安全搜索级别。

Parameters:
  • searxng_host (str) - 用于搜索的SearxNG实例的URL。必须是有效的HTTP/HTTPS URL。

  • language (str, optional) – 搜索结果的语种代码。 (默认: "en")

  • categories (List[str], optional) – 要使用的搜索类别列表。 (默认值: None)

  • time_range (str, optional) – 用于筛选搜索结果的时间范围。有效值为"day"、"week"、"month"、"year"。(默认值: None)

  • safe_search (int, optional) – 安全搜索级别 (0: 无, 1: 中等, 2: 严格)。(默认: 1)

  • timeout (可选[float]) - API请求的超时时间,单位为秒。如果为None,则不应用超时。 (默认值: None)

Raises:
  • ValueError – 如果searxng_host不是有效的HTTP/HTTPS URL。

  • ValueError - 如果safe_search不在有效范围[0, 2]内。

  • ValueError - 如果提供了time_range但不在有效选项中。

get_tools() List[FunctionTool][来源]#

获取工具包中可用的工具列表。

Returns:

表示工具包中

可用功能的FunctionTool对象列表。

Return type:

列表[FunctionTool]

search(query: str, num_results: int = 10, category: str | None = None) List[Dict[str, str]][来源]#

使用配置的SearxNG实例执行网络搜索。

Parameters:
  • query (str) – 要执行的搜索查询字符串。

  • num_results (int, optional) – 要返回的最大结果数量。 (默认值: 10)

  • category (str, optional) – 指定要使用的搜索类别。如果未提供,则使用self.categories中的第一个类别。 (default: None)

Returns:

搜索结果列表,其中每个结果是

包含'title'、'link'和'snippet'键的字典。

Return type:

List[Dict[str, str]]

class camel.toolkits.SemanticScholarToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于与Semantic Scholar API交互以获取论文和作者数据的工具包。

fetch_author_data(ids: List[str], fields: List[str] | None = None, save_to_file: bool = False) dict[来源]#

根据作者ID从Semantic Scholar API获取作者信息。

Parameters:
  • ids (list) – 要获取数据的作者ID列表(字符串形式)。

  • fields (可选[列表[字符串]], 可选) – 响应中包含的字段(默认:None)。如果未提供,则默认为["name", "url", "paperCount", "hIndex", "papers"]。

  • save_to_file (bool, optional) – 是否将结果保存到文件中(默认: False)。

Returns:

来自API的响应数据或错误信息(如果

请求失败)。

Return type:

字典

fetch_bulk_paper_data(query: str, year: str = '2023-', fields: List[str] | None = None) dict[来源]#

根据相关主题从Semantic Scholar API批量获取多篇论文。

Parameters:
  • query (str) – 用于匹配论文标题和摘要的文本查询。例如,您可以使用以下运算符和技术构建查询:示例1:((cloud computing) | virtualization) +security -privacy 这将匹配标题或摘要包含"cloud"和"computing",或包含单词"virtualization"的论文。这些论文还必须包含术语"security",但排除包含单词"privacy"的论文。

  • year (str, optional) – 论文的年份筛选条件(默认值: "2023-")。

  • fields (可选[列表[字符串]], 可选) – 响应中包含的字段(默认:None)。如果未提供,则默认为["title", "url", "publicationTypes", "publicationDate", "openAccessPdf"]。

Returns:

来自API的响应数据或请求失败时的错误信息

请求失败。

Return type:

字典

fetch_paper_data_id(paper_id: str, fields: List[str] | None = None) dict[来源]#

根据论文ID从Semantic Scholar API获取单篇论文。

Parameters:
  • paper_id (str) – 要获取的论文ID。

  • fields (可选[列表[字符串]], 可选) – 响应中包含的字段(默认:None)。如果未提供,则默认为["title", "abstract", "authors", "year", "citationCount", "publicationTypes", "publicationDate", "openAccessPdf"]。

Returns:

来自API的响应数据或错误信息

如果请求失败。

Return type:

字典

fetch_paper_data_title(paper_title: str, fields: List[str] | None = None) dict[来源]#

根据论文标题从Semantic Scholar API获取单篇论文。

Parameters:
  • paper_title (str) – 要获取的论文标题。

  • fields (可选[列表[字符串]], 可选) – 响应中包含的字段(默认:None)。如果未提供,默认为["title", "abstract", "authors", "year", "citationCount", "publicationTypes", "publicationDate", "openAccessPdf"]。

Returns:

来自API的响应数据或请求失败时的错误信息

请求失败。

Return type:

字典

根据正向和负向论文ID,从Semantic Scholar API获取推荐论文。

Parameters:
  • positive_paper_ids (list) – 与推荐结果呈正相关的论文ID列表(字符串形式)

  • negative_paper_ids (list) - 与推荐结果负相关的论文ID列表(字符串形式)

  • fields (可选[列表[字符串]], 可选) – 响应中包含的字段(默认: None)。如果未提供,默认为["title", "url", "citationCount", "authors", "publicationTypes", "publicationDate", "openAccessPdf"]。

  • limit (int, optional) – 返回推荐论文的最大数量(默认:500)。

  • save_to_file (bool, optional) – 如果为True,则将响应数据保存到文件中(默认:False)。

Returns:

一个包含按

引用次数排序的推荐论文的字典。

Return type:

字典

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.SlackToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示Slack操作工具包的类。

该类提供了Slack操作的方法,例如创建新频道、加入现有频道、离开频道。

create_slack_channel(name: str, is_private: bool | None = True) str[来源]#

创建一个新的Slack频道,可以是公开的或私密的。

Parameters:
  • name (str) – 要创建的公共或私有频道的名称。

  • is_private (bool, optional) – 是否创建私有频道而非公共频道。默认为 True

Returns:

包含Slack相关信息的JSON字符串

频道已创建。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

delete_slack_message(time_stamp: str, channel_id: str) str[来源]#

向Slack频道删除一条消息。

Parameters:
  • time_stamp (str) - 要删除消息的时间戳。

  • channel_id (str) - 要删除消息的Slack频道ID。

Returns:

指示消息是否被成功删除的确认信息

或错误消息。

Return type:

字符串

Raises:

SlackApiError – 发送消息时发生错误。

get_slack_channel_information() str[来源]#
Retrieve Slack channels and return relevant information in JSON

格式。

Returns:

包含Slack频道信息的JSON字符串。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

get_slack_channel_message(channel_id: str) str[来源]#

从Slack频道检索消息。

Parameters:

channel_id (str) – 要从中检索消息的Slack频道ID。

Returns:

包含过滤后消息数据的JSON字符串。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道消息时出现错误。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

join_slack_channel(channel_id: str) str[来源]#

加入现有的Slack频道。

Parameters:

channel_id (str) – 要加入的Slack频道ID。

Returns:

显示是否成功加入的确认消息

或错误信息。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

leave_slack_channel(channel_id: str) str[来源]#

离开现有的Slack频道。

Parameters:

channel_id (str) – 要退出的Slack频道ID。

Returns:

显示是否成功离开的确认消息

或错误消息。

Return type:

字符串

Raises:

SlackApiError – 如果在获取Slack频道信息过程中发生错误。

send_slack_message(message: str, channel_id: str, user: str | None = None) str[来源]#

向Slack频道发送消息。

Parameters:
  • message (str) – 要发送的消息。

  • channel_id (str) – 要发送消息的Slack频道ID。

  • user (可选[str]) – 接收者的用户ID。 默认为 None

Returns:

显示消息是否成功发送的确认信息

成功发送或错误消息。

Return type:

字符串

Raises:

SlackApiError – 发送消息时发生错误。

class camel.toolkits.StripeToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示Stripe操作工具包的类。

该工具包提供了与Stripe API交互的方法,允许用户操作stripe核心资源,包括Customer、Balance、BalanceTransaction、Payment、Refund

使用开发者仪表板 https://dashboard.stripe.com/test/apikeys 创建API密钥作为STRIPE_API_KEY。

logger#

一个用于记录日志的记录器。

Type:

日志记录器

balance_get() str[来源]#

查询您的账户余额。

Returns:

如果成功则返回包含账户余额的字符串,或

如果失败则返回错误信息字符串。

Return type:

字符串

balance_transaction_list(limit: int = 100) str[来源]#

列出您的余额交易记录。

Parameters:

limit (int, optional) – 要检索的余额交易数量。 (默认值:100)

Returns:

如果成功则返回余额交易数据列表,如果失败则返回错误

消息字符串。

Return type:

字符串

customer_get(customer_id: str) str[来源]#

根据ID检索客户。

Parameters:

customer_id (str) – 要检索的客户ID。

Returns:

客户数据以字符串形式呈现。

Return type:

字符串

customer_list(limit: int = 100) str[来源]#

列出客户。

Parameters:

limit (int, optional) – 要获取的客户数量。(默认值: 100)

Returns:

如果成功则返回输出字符串,如果

失败则返回错误信息字符串。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表,用于

工具包方法。

Return type:

列表[FunctionTool]

handle_exception(func_name: str, error: Exception) str[来源]#

通过记录日志并返回错误信息来处理异常。

Parameters:
  • func_name (str) – 发生异常的函数的名称。

  • error (Exception) - 异常实例。

Returns:

错误消息字符串。

Return type:

字符串

payment_get(payment_id: str) str[来源]#

通过ID获取付款信息。

Parameters:

payment_id (str) – 要检索的付款ID。

Returns:

支付数据,成功时为字符串,否则为错误信息

失败时为字符串。

Return type:

字符串

payment_list(limit: int = 100) str[来源]#

列出付款记录。

Parameters:

limit (int, optional) – 要获取的支付数量。 (默认值:100)

Returns:

如果成功则返回支付数据列表,否则返回错误信息

失败时返回字符串。

Return type:

字符串

refund_get(refund_id: str) str[来源]#

通过ID检索退款。

Parameters:

refund_id (str) – 要检索的退款ID。

Returns:

如果成功,退款数据将以字符串形式返回;否则返回错误信息

失败时返回字符串。

Return type:

字符串

refund_list(limit: int = 100) str[来源]#

列出退款。

Parameters:

limit (int, 可选) – 要获取的退款数量。 (默认值:100)

Returns:

如果成功,返回退款数据列表字符串;如果失败,则返回错误

消息字符串。

Return type:

字符串

class camel.toolkits.SymPyToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个使用SymPy进行符号计算的工具包。包含代数运算、微积分和线性代数的方法。

check_continuity(expression: str, variable: str, point: float) str[来源]#

检查表达式在给定点是否连续。

Parameters:
  • expression (str) – 要检查连续性的数学表达式,以字符串形式提供。

  • variable (str) – 用于检查连续性的变量。

  • point (float) – 检查表达式连续性的点。

Returns:

包含连续性检查结果的JSON字符串

位于"result"字段中。如果表达式在给定点是连续的,结果将为"True",否则为"False"。如果发生错误,JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

compute_determinant(matrix: List[List[float]]) str[来源]#

计算矩阵的行列式。

Parameters:

matrix (List[List[float]]) – 一个二维列表,表示要计算行列式的矩阵。

Returns:

包含矩阵行列式的JSON字符串位于

"result"字段中。如果发生错误,该JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

compute_eigenvalues(matrix: List[List[float]]) str[来源]#

计算矩阵的特征值。

Parameters:

matrix (List[List[float]]) – 一个二维列表,表示需要计算其特征值的矩阵。

Returns:

包含矩阵特征值的JSON字符串

"result"字段中。特征值以字典形式表示, 其中键是特征值(作为字符串), 值是它们的重数(作为字符串)。如果发生错误, JSON字符串将包含一个"error"字段 以及相应的错误信息。

Return type:

字符串

compute_eigenvectors(matrix: List[List[float]]) str[来源]#

计算矩阵的特征向量。

Parameters:

matrix (List[List[float]]) – 一个二维列表,表示需要计算特征向量的矩阵。

Returns:

包含矩阵特征向量的JSON字符串,位于

"result"字段中。每个特征值表示为具有以下键的字典: - "eigenvalue": 特征值(以字符串形式) - "multiplicity": 特征值的重数(以整数形式) - "eigenvectors": 特征向量列表(每个特征向量以字符串形式表示)

如果发生错误,JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

compute_inner_product(vector1: List[float], vector2: List[float]) str[来源]#

计算两个向量的内积(点积)。

Parameters:
  • vector1 (List[float]) - 第一个向量,作为浮点数列表。

  • vector2 (List[float]) - 第二个向量,作为浮点数列表。

Returns:

包含内积的JSON字符串位于“result”字段中

如果发生错误,JSON字符串将包含一个“error”字段及相应的错误信息。

Return type:

字符串

Raises:

ValueError – 如果向量具有不同的维度。

compute_inverse(matrix: List[List[float]]) str[来源]#

计算矩阵的逆矩阵。

Parameters:

matrix (List[List[float]]) – 一个二维列表,表示需要计算逆矩阵的矩阵。

Returns:

包含矩阵逆的JSON字符串,位于

"result"字段中。该逆矩阵以符号矩阵格式表示。如果发生错误,JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

compute_limit(expression: str, variable: str, point: float) str[来源]#

计算表达式在变量趋近某一点时的极限。

Parameters:
  • expression (str) – 要计算极限的数学表达式,以字符串形式提供。

  • variable (str) – 计算极限时所用的变量。

  • point (float) – 变量趋近的点。

Returns:

包含表达式计算限制的JSON字符串

位于“result”字段中。如果发生错误,JSON字符串 将包含一个“error”字段,其中包含相应的错误 信息。

Return type:

字符串

compute_nullspace(matrix: List[List[float]]) str[来源]#

计算矩阵的零空间。

Parameters:

matrix (List[List[float]]) - 一个二维列表,表示要计算其零空间的矩阵。

Returns:

包含矩阵零空间的JSON字符串

"result"字段中的内容。零空间表示为一组基向量的列表,其中每个向量都以符号格式的字符串给出。如果发生错误,JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

compute_rank(matrix: List[List[float]]) str[来源]#

计算矩阵的秩。

Parameters:

matrix (List[List[float]]) – 一个二维列表,表示要计算秩的矩阵。

Returns:

包含矩阵秩的JSON字符串

结果存储在"result"字段中。秩以整数形式表示。 如果发生错误,JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

definite_integral(expression: str, variable: str, lower: float, upper: float) str[来源]#

计算表达式在给定边界内的定积分。

Parameters:
  • expression (str) – 要积分的数学表达式,以字符串形式提供。

  • variable (str) – 进行定积分运算所针对的变量。

  • lower (float) – 积分的下限。

  • upper (float) – 积分的上限。

Returns:

包含定积分结果的JSON字符串

结果将显示在"result"字段中。如果发生错误,JSON字符串会包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

differentiate(expression: str, variable: str | None = None) str[来源]#

对表达式关于某个变量进行微分。

Parameters:
  • expression (str) – 要微分的数学表达式,以字符串形式提供。

  • variable (str, optional) – 进行微分运算所针对的变量。如果未指定,则使用默认变量。

Returns:

包含表达式导数的JSON字符串

"result"字段中。如果发生错误,该JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

expand_expression(expression: str) str[来源]#

展开一个代数表达式。

Parameters:

expression (str) – 要展开的代数表达式,以字符串形式提供。

Returns:

包含展开代数表达式的JSON字符串

位于"result"字段中。如果发生错误,该JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

factor_expression(expression: str) str[来源]#

分解代数表达式。

Parameters:

expression (str) – 要因式分解的代数表达式,以字符串形式提供。

Returns:

包含因式分解代数表达式的JSON字符串

位于"result"字段中。如果发生错误,该JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

find_critical_points(expression: str, variable: str) str[来源]#

通过将表达式的导数设为零来找到其临界点。

Parameters:
  • expression (str) – 需要寻找临界点的数学表达式,以字符串形式提供。

  • variable (str) – 用于确定临界点的变量。

Returns:

包含表达式关键点的JSON字符串

"result"字段中。关键点以对应变量的值列表形式返回。如果发生错误,JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

find_roots(expression: str) str[来源]#

寻找多项式或代数方程的根。

Parameters:

expression (str) – 需要求根的多项式或代数方程,以字符串形式提供。

Returns:

包含表达式根的JSON字符串,位于

"result"字段中。根以解决方案列表的形式表示。如果发生错误,JSON字符串将包含一个设置为"error""status"字段,以及带有相应错误描述的"message"字段。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

将该工具的方法暴露给代理框架。

Returns:

一个表示FunctionTool对象的列表

该工具包的方法,使代理可以访问它们。

Return type:

列表[FunctionTool]

handle_exception(func_name: str, error: Exception) str[来源]#

通过记录日志并返回错误详情来处理异常。

Parameters:
  • func_name (str) – 函数名称,其中

  • 发生错误。 (异常)

  • error (Exception) - 包含异常信息的异常对象

  • 错误。 (关于该错误的详细信息)

Returns:

包含错误详情的JSON字符串。

该JSON包含: - “status”: 始终设置为“error”。 - “message”: 异常信息的字符串表示。

Return type:

字符串

integrate(expression: str, variable: str | None = None) str[来源]#

对表达式关于某个变量进行积分。

Parameters:
  • expression (str) – 要积分的数学表达式,以字符串形式提供。

  • variable (str, optional) – 关于哪个变量进行积分的变量。如果未指定,则使用默认变量。

Returns:

包含表达式积分的JSON字符串

"result"字段中。如果发生错误,JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

polynomial_coefficients(expression: str, variable: str) str[来源]#

返回多项式的系数。

Parameters:
  • expression (str) – 要从中提取系数的多项式表达式,以字符串形式提供。

  • variable (str) – 用于确定多项式系数的变量。

Returns:

包含多项式系数列表的JSON字符串

位于"result"字段中。系数按从最高次项到常数项的顺序排列。 如果发生错误,JSON字符串将包含一个`"error"字段,其中包含相应的错误信息。

Return type:

字符串

polynomial_degree(expression: str, variable: str) str[来源]#

返回多项式的次数。

Parameters:
  • expression (str) – 需要确定次数的多项式表达式,以字符串形式提供。

  • variable (str) - 用于计算多项式次数的变量。

Returns:

包含多项式次数的JSON字符串

"result"字段。如果发生错误,该JSON字符串将包含一个"error"字段,其中包含相应的错误信息。

Return type:

字符串

polynomial_representation(expression: str, variable: str) str[来源]#

将表达式表示为多项式。

Parameters:
  • expression (str) – 要表示为多项式的数学表达式,以字符串形式提供。

  • variable (str) - 将用于创建多项式表示的变量。

Returns:

包含多项式表示的JSON字符串

表达式位于“result”字段中。该多项式以符号格式返回。如果发生错误,JSON字符串将包含一个“error”字段,其中包含相应的错误信息。

Return type:

字符串

reduce_inequalities(inequalities: List[str]) str[来源]#

简化不等式系统。

Parameters:

inequalities (List[str]) – 一个字符串列表,表示需要被简化的不等式。

Returns:

包含简化不等式系统的JSON字符串

位于"result"字段中。解以符号格式表示(例如组合区间或表达式)。 如果发生错误,JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

series_expansion(expression: str, variable: str, point: float, order: int) str[来源]#

将一个表达式在给定点附近展开为泰勒级数,直到指定阶数。

Parameters:
  • expression (str) - 要展开的数学表达式,以字符串形式提供。

  • variable (str) – 进行级数展开时所针对的变量。

  • point (float) – 泰勒级数展开所围绕的点。

  • order (int) – 级数展开的最高阶数

  • 计算得出的。

Returns:

包含泰勒级数展开的JSON字符串

表达式位于"result"字段中。如果发生错误, 该JSON字符串将包含一个"error"字段, 其中包含相应的错误信息。

Return type:

字符串

simplify_expression(expression: str) str[来源]#

简化数学表达式。

Parameters:

expression (str) – 要简化的数学表达式,以字符串形式提供。

Returns:

包含简化数学表达式的JSON字符串

位于"result"字段中。如果发生错误, "status"字段将被设置为"error",并附带相应的 "message"信息。

Return type:

字符串

solve_equation(sympy_equation: str, variable: str | None = None) str[来源]#

解特定变量的方程。

Parameters:
  • sympy_equation (str) – 要解的方程,必须与SymPy兼容,以字符串形式提供。

  • variable (str, optional) – 要解决的变量。如果未指定,函数将使用默认变量。

Returns:

包含方程解的JSON字符串

"result"字段中。每个解都表示为一个字符串。 如果发生错误,JSON字符串将包含一个带有相应错误信息的"error"字段。

Return type:

字符串

solve_linear_system(equations: List[str], variables: List[str]) str[来源]#

解线性方程组。

Parameters:
  • equations (List[str]) - 表示待求解线性方程的字符串列表。

  • variables (List[str]) - 一个字符串列表,表示方程中涉及的变量。

Returns:

包含方程组解的JSON字符串

"result"字段中。每个解表示为一个对应变量的值元组。如果发生错误,JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

solve_nonlinear_system(sympy_equations: List[str], variables: List[str]) str[来源]#

求解非线性方程组系统。

Parameters:
  • sympy_equations (List[str]) – 表示待求解非线性方程的字符串列表。要求解的方程必须与SymPy兼容,并以字符串形式提供。

  • variables (List[str]) – 一个字符串列表,表示方程式中涉及的变量。

Returns:

包含方程组解的JSON字符串

解位于"result"字段中。每个解都表示为一个与变量对应的值元组。如果发生错误,JSON字符串将包含一个带有相应错误信息的"error"字段。

Return type:

字符串

solve_univariate_inequality(inequality: str, variable: str) str[来源]#

解一个单变量不等式。

Parameters:
  • inequality (str) - 表示要解决的不等式的字符串。

  • variable (str) – 不等式中的变量。

Returns:

包含不等式解的JSON字符串

"result"字段中。该解以符号格式表示(例如区间或表达式)。如果出现错误,JSON字符串将包含一个"error"字段及相应的错误信息。

Return type:

字符串

class camel.toolkits.TerminalToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于跨多个操作系统进行终端操作的工具包。

该工具包提供了一组用于终端操作的函数,例如按名称或内容搜索文件、执行shell命令以及管理终端会话。

Parameters:
  • timeout (Optional[float]) - 终端操作的超时时间。

  • shell_sessions (可选[字典[字符串, 任意类型]]) – 用于存储shell会话信息的字典。如果为None,将使用空字典。(默认值: {})

  • working_dir (str) – 操作的工作目录。 如果指定,所有执行和写入操作将被限制在此目录内。读取操作可以访问此目录之外的路径。(默认: "./workspace")

  • need_terminal (bool) – 是否需要创建终端界面。 (默认值: True)

  • use_shell_mode (bool) - 是否使用shell模式执行命令。 (默认: True)

  • clone_current_env (bool) – 是否克隆当前的Python环境。(默认: False)

  • safe_mode (bool) - 是否启用安全模式以限制操作。 (默认值: True)

注意

大多数函数与基于Unix的系统(macOS, Linux)兼容。 如需Windows兼容性,则需要额外的实现细节。

file_find_by_name(path: str, glob: str) str[来源]#

在指定目录中按文件名模式查找文件。

Parameters:
  • path (str) - 要搜索的目录的绝对路径。

  • glob (str) - 使用glob语法通配符的文件名模式。

Returns:

匹配该模式的文件列表。

Return type:

字符串

file_find_in_content(file: str, regex: str, sudo: bool = False) str[来源]#

在文件内容中搜索匹配的文本。

Parameters:
  • file (str) – 要搜索的文件的绝对路径。

  • regex (str) – 要匹配的正则表达式模式。

  • sudo (bool, optional) - 是否使用sudo权限。默认为False。注意:使用sudo需要该进程具备相应的权限。

Returns:

在文件中找到匹配的内容。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示工具包中函数的FunctionTool对象列表

工具包中的函数。

Return type:

列表[FunctionTool]

shell_exec(id: str, command: str) str[来源]#

执行命令。这可用于执行各种命令,例如编写代码、执行代码和运行命令。

Parameters:
  • id (str) – 目标shell会话的唯一标识符。

  • command (str) – 要执行的Shell命令。

Returns:

命令执行的输出或错误信息。

Return type:

字符串

shell_kill_process(id: str) str[来源]#

终止指定shell会话中正在运行的进程。

Parameters:

id (str) – 目标shell会话的唯一标识符。

Returns:

状态消息,指示进程是否已终止。

Return type:

字符串

shell_view(id: str) str[来源]#

查看指定shell会话的内容。

Parameters:

id (str) – 目标shell会话的唯一标识符。

Returns:

当前shell会话的输出内容。

Return type:

字符串

shell_wait(id: str, seconds: int | None = None) str[来源]#

等待指定shell会话中正在运行的进程返回。

Parameters:
  • id (str) – 目标shell会话的唯一标识符。

  • seconds (Optional[int], optional) – 等待时间,单位为秒。 如果为None,则无限期等待。默认为None。

Returns:

等待后的最终输出内容。

Return type:

字符串

shell_write_to_process(id: str, input: str, press_enter: bool) str[来源]#

将输入写入指定shell会话中正在运行的进程。

Parameters:
  • id (str) – 目标shell会话的唯一标识符。

  • input (str) - 要写入进程的输入内容。

  • press_enter (bool) - 输入后是否按下Enter键。

Returns:

状态消息,指示输入是否已发送。

Return type:

字符串

class camel.toolkits.ThinkingToolkit(timeout: float | None = None)[来源]#

基类: BaseToolkit

一个用于在推理过程中记录想法的工具包。

contemplate(contemplation: str) str[来源]#

使用该工具深入思考一个想法或概念。 这个工具用于更深入、更全面地探索想法, 考虑多个角度和影响。它比基础思考更全面, 但比反思更专注。

Parameters:

沉思 (str) – 对思想或概念的深入探索。

Returns:

记录下的沉思。

Return type:

字符串

critique(critique: str) str[来源]#

使用该工具批判性地评估当前的想法。 这个工具用于识别当前思考过程中潜在的缺陷、偏见或弱点。

Parameters:

critique (str) – 对当前想法的批判性评价。

Returns:

记录下来的批评意见。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

获取工具包中的所有工具。

Returns:

工具列表。

Return type:

列表[FunctionTool]

hypothesize(hypothesis: str) str[来源]#

使用该工具来形成假设或做出预测。 这个工具用于在深入思考之前,基于计划做出有根据的猜测或预测。

Parameters:

hypothesis (str) – 要测试的假设或预测。

Returns:

记录下的假设。

Return type:

字符串

plan(plan: str) str[来源]#

使用该工具创建计划或策略。 这个工具用于在实际思考过程开始之前, 概述要采取的方法或步骤。

Parameters:

plan (str) – 前瞻性的计划或策略。

Returns:

记录的计划。

Return type:

字符串

reflect(reflection: str) str[来源]#

使用该工具对整个思考过程进行反思。 此工具用于对整个思维过程进行最终评估, 包括计划、假设、思考、沉思、批评 以及综合。

Parameters:

reflection (str) – 对过程的全面反思。

Returns:

记录下来的反思。

Return type:

字符串

synthesize(synthesis: str) str[来源]#

使用该工具来整合和融合各种想法。 这个工具旨在将不同的思考、沉思和批评汇集为一个连贯的理解。

Parameters:

synthesis (str) – 对多种想法和见解的整合。

Returns:

记录的综合结果。

Return type:

字符串

think(thought: str) str[来源]#

使用该工具来思考某些事情。 它不会获取新信息或更改数据库,而只是 将想法追加到日志中。在计划执行过程中, 用它来记录初步想法和观察结果。

Parameters:

思考 (str) – 需要思考的想法。

Returns:

记录的思想。

Return type:

字符串

class camel.toolkits.TwitterToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示Twitter操作工具包的类。

该类提供了创建推文、删除推文以及获取认证用户个人资料信息的方法。

参考文献

https://developer.x.com/en/portal/dashboard

注意事项

要使用此工具包,您需要设置以下环境变量: - TWITTER_CONSUMER_KEY: Twitter API的消费者密钥。 - TWITTER_CONSUMER_SECRET: Twitter API的消费者密钥密文。 - TWITTER_ACCESS_TOKEN: Twitter API的访问令牌。 - TWITTER_ACCESS_TOKEN_SECRET: Twitter API的访问令牌密文

API。

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.VideoAnalysisToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于通过视觉语言模型分析视频的类。

Parameters:
  • download_directory (Optional[str], optional) – 视频将被下载到的目录。如果未提供,视频将存储在临时目录中,并在使用后清理。 (default: None)

  • model (可选[BaseModelBackend], 可选) – 用于可视化分析的模型。(默认: None)

  • use_audio_transcription (bool, optional) – 是否启用使用OpenAI音频模型进行音频转录功能。需要有效的OpenAI API密钥。禁用时,视频分析将仅基于视觉内容。(默认: False)

  • timeout (可选[float]) - API请求的超时时间,单位为秒。如果为None,则不应用超时。 (默认值: None)

ask_question_about_video(video_path: str, question: str, num_frames: int = 28) str[来源]#

询问关于视频的问题。

Parameters:
  • video_path (str) – 视频文件的路径。 可以是本地文件或URL(如Youtube网站)。

  • question (str) – 关于视频要询问的问题。

  • num_frames (int) – 要从视频中提取的帧数。 需要根据视频长度进行调整。 (默认: 28)

Returns:

问题的答案。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

class camel.toolkits.VideoDownloaderToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个用于下载视频并可选择将其分割成块的类。

Parameters:
  • download_directory (Optional[str], optional) – 视频将被下载到的目录。如果未提供,视频将存储在临时目录中,并在使用后清理。 (default: None)

  • cookies_path (Optional[str], optional) – 视频服务的cookies文件路径,需为Netscape格式。(默认值: None)

download_video(url: str) str[来源]#

下载视频并可选地将其分割成片段。

yt-dlp会自动检测视频是否已下载,因此无需检查视频是否存在。

Returns:

下载的视频文件路径。

Return type:

字符串

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

get_video_bytes(video_path: str) bytes[来源]#

通过路径下载视频,并以字节形式返回内容。

Parameters:

video_path (str) – 视频文件的路径。

Returns:

视频文件的字节内容。

Return type:

字节

get_video_screenshots(video_path: str, amount: int) List[Image][来源]#

从视频中按指定时间戳捕获截图,如果提供整数参数则通过将视频均分为若干等份来捕获截图。

Parameters:
  • video_url (str) – 要截取屏幕快照的视频URL。

  • amount (int) - 要捕获的均匀分割截图的数量。

Returns:

作为Image.Image的截图列表。

Return type:

List[Image.Image]

class camel.toolkits.WeatherToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于与天气数据交互的工具包的类。

该类提供了使用OpenWeatherMap API获取指定城市天气数据的方法。

get_openweathermap_api_key() str[来源]#

从环境变量中获取OpenWeatherMap API密钥。

Returns:

OpenWeatherMap API密钥。

Return type:

字符串

Raises:
  • ValueError - 如果在环境中找不到API密钥

  • 变量.

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表

表示工具包中的函数。

Return type:

列表[FunctionTool]

get_weather_data(city: str, temp_units: Literal['kelvin', 'celsius', 'fahrenheit'] = 'kelvin', wind_units: Literal['meters_sec', 'miles_hour', 'knots', 'beaufort'] = 'meters_sec', visibility_units: Literal['meters', 'miles'] = 'meters', time_units: Literal['unix', 'iso', 'date'] = 'unix') str[来源]#

获取并返回指定城市的综合天气报告,以字符串形式呈现。该报告包含当前天气状况、温度、风力详情、能见度以及日出/日落时间,所有信息均格式化为易读的字符串。

该函数与OpenWeatherMap API交互以获取数据。

Parameters:
  • city (str) – 需要获取天气信息的城市名称。格式为"城市, 国家代码"(例如"Paris, FR"表示法国巴黎)。如果未提供国家代码,API将在所有国家中搜索该城市,当存在多个同名城市时可能导致错误结果。

  • temp_units (Literal['kelvin', 'celsius', 'fahrenheit']) – 温度单位。(默认: kelvin)

  • wind_units – (Literal['meters_sec', 'miles_hour', 'knots', 'beaufort']): 风速的单位。(默认: meters_sec)

  • visibility_units (Literal['meters', 'miles']) – 能见度距离的单位。(默认: meters)

  • time_units (Literal['unix', 'iso', 'date']) – 日出和日落时间的格式。(默认: unix)

Returns:

一个包含获取到的天气数据的字符串,格式化为

可读的形式。如果发生错误,将返回指示错误的消息。

Return type:

字符串

Example of return string:

“法国巴黎天气:15°C,体感温度13°C。最高气温:17°C, 最低气温:12°C。 风速:5米/秒,风向270度。能见度:10公里。 日出时间:05:46:05(UTC),日落时间:18:42:20(UTC)。"

注意

Please ensure that the API key is valid and has permissions

访问天气数据。

class camel.toolkits.WhatsAppToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示WhatsApp操作工具包的类。

该工具包提供了与WhatsApp Business API交互的方法,允许用户发送消息、检索消息模板以及获取商业资料信息。

retries#

API请求失败时的重试次数。

Type:

int

delay#

重试之间的延迟时间(以秒为单位)。

Type:

int

base_url#

WhatsApp Business API的基础URL。

Type:

字符串

version#

API版本。

Type:

字符串

get_business_profile() Dict[str, Any] | str[来源]#

获取WhatsApp商业账户的个人资料信息。

Returns:

包含业务信息的字典

如果成功则包含个人资料信息,如果失败则返回错误信息字符串。

Return type:

Union[Dict[str, Any], str]

get_message_templates() List[Dict[str, Any]] | str[来源]#

获取WhatsApp商业账户的所有消息模板。

Returns:

包含字典的列表

如果成功则包含模板信息,如果失败则包含错误信息字符串。

Return type:

Union[List[Dict[str, Any]], str]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

FunctionTool对象列表,用于

工具包方法。

Return type:

列表[FunctionTool]

send_message(to: str, message: str) Dict[str, Any] | str[来源]#

向指定的WhatsApp号码发送短信。

Parameters:
  • to (str) – 收件人的WhatsApp号码,需使用国际格式。

  • message (str) – 要发送的文本消息。

Returns:

包含的字典

如果成功则为API响应,如果失败则为错误消息字符串。

Return type:

Union[Dict[str, Any], str]

class camel.toolkits.ZapierToolkit(*args, **kwargs)[来源]#

基类: BaseToolkit

一个表示用于与Zapier的NLA API交互的工具包的类。

该类提供了通过自然语言命令执行Zapier操作的方法,允许与各种网络服务集成并通过Zapier平台实现工作流自动化。

api_key#

用于与Zapier API进行身份验证的API密钥。

Type:

字符串

base_url#

Zapier API端点的基本URL。

Type:

字符串

timeout#

API请求的超时值(以秒为单位)。如果为None,则不应用超时。 (默认值: None)

Type:

可选[浮点数]

execute_action(action_id: str, instructions: str) Dict[str, Any][来源]#

使用自然语言指令执行特定的Zapier操作。

Parameters:
  • action_id (str) - 要执行的Zapier操作的ID。

  • instructions (str) – 执行该操作的自然语言指令。例如:"发送一封电子邮件至john@example.com,主题为'Hello',正文为'How are you?'"

Returns:

动作执行的结果,包括

状态和任何输出数据。

Return type:

字典[字符串, 任意类型]

get_execution_result(execution_id: str) Dict[str, Any][来源]#

获取Zapier操作的执行结果。

Parameters:

execution_id (str) – 从execute_action返回的执行ID。

Returns:

包含状态、日志的执行结果,

以及来自操作执行的任何输出数据。

Return type:

字典[字符串, 任意类型]

get_tools() List[FunctionTool][来源]#

返回一个表示工具包中函数的FunctionTool对象列表。

Returns:

表示FunctionTool对象的列表

工具包中的函数。

Return type:

列表[FunctionTool]

list_actions() Dict[str, Any][来源]#

列出所有可用的Zapier操作。

Returns:

包含可用操作列表的字典

操作。

Return type:

字典[字符串, 任意类型]

preview_action(action_id: str, instructions: str) Dict[str, Any][来源]#

使用自然语言指令预览特定的Zapier操作。

Parameters:
  • action_id (str) - 要预览的Zapier操作的ID。

  • instructions (str) – 用于预览操作的自然语言指令。例如:"发送一封电子邮件至john@example.com,主题为'你好',正文内容为'最近怎么样?'"

Returns:

预览结果显示如果执行该操作将会使用哪些参数

Return type:

字典[字符串, 任意类型]

camel.toolkits.generate_docstring(code: str, model: BaseModelBackend | None = None) str[来源]#

使用LLM为给定函数代码生成文档字符串。

该函数利用语言模型为提供的Python函数生成符合PEP 8/PEP 257规范的文档字符串。 如果未提供模型,则默认使用gpt-4o-mini。

Parameters:
  • code (str) – 函数的源代码。

  • model (可选[BaseModelBackend]) – 一个可选的语言模型后端实例。如果未提供,则默认使用gpt-4o-mini。

Returns:

生成的文档字符串。

Return type:

字符串

camel.toolkits.get_openai_function_schema(func: Callable) Dict[str, Any][来源]#

根据OpenAI函数的签名生成一个模式字典。

此函数已弃用,未来版本将由 get_openai_tool_schema() 替代。它会解析 函数的参数和文档字符串来构建类似JSON模式的 字典。

Parameters:

func (可调用对象) – 用于生成模式( schema )的OpenAI函数。

Returns:

表示该函数JSON模式的字典

包括其名称、描述和参数规范。

Return type:

字典[字符串, 任意类型]

camel.toolkits.get_openai_tool_schema(func: Callable) Dict[str, Any][来源]#

根据给定的Python函数生成OpenAI JSON模式。

该函数根据提供的Python函数创建一个与OpenAI API规范兼容的模式。它会处理函数的参数、类型和文档字符串,并相应地构建模式。

注意

  • func中的每个参数都必须有类型注解;否则,它将被视为'Any'。

  • 可变参数(*args)和关键字参数(**kwargs)不受支持,将被忽略。

  • func的文档字符串中应提供功能描述,包括简要和详细的解释。

  • func的所有参数都必须在其文档字符串中描述。

  • 支持的文档字符串风格:ReST、Google、Numpydoc和Epydoc。

Parameters:

func (Callable) – 将被转换为OpenAI JSON模式的Python函数。

Returns:

表示所提供函数的OpenAI JSON模式的字典

Return type:

字典[字符串, 任意类型]