Skip to main content

code_utils

content_str

def content_str(
content: Union[str, List[Union[UserMessageTextContentPart,
UserMessageImageContentPart]], None]
) -> str

将 OpenAI 消息的 content 字段转换为字符串格式。

该函数处理可能是字符串、混合文本和图像 URL 列表或 None 的内容,并将其转换为字符串。文本直接附加到结果字符串,而图像 URL 则由占位符图像令牌表示。如果内容为 None,则返回空字符串。

参数

  • content (Union[str, List, None]): 要处理的内容。可以是字符串、表示文本和图像 URL 的字典列表或 None。

返回值

  • str - 输入内容的字符串表示。图像 URL 被替换为图像令牌。

注意

  • 函数期望列表中的每个字典都有一个 "type" 键,其值为 "text" 或 "image_url"。对于 "text" 类型,将 "text" 键的值附加到结果中。对于 "image_url",将附加一个图像令牌。
  • 此函数适用于处理可能包含文本和图像引用的内容,特别是在需要将图像表示为占位符的上下文中。

infer_lang

def infer_lang(code: str) -> str

推断代码的语言。 TODO:使其更健壮。

extract_code

def extract_code(
text: Union[str, List],
pattern: str = CODE_BLOCK_PATTERN,
detect_single_line_code: bool = False) -> List[Tuple[str, str]]

从文本中提取代码。

参数

  • text str or List - 要从中提取代码的内容。内容可以是字符串或列表,与标准 GPT 或多模态 GPT 返回的内容相同。
  • pattern str, optional - 用于查找代码块的正则表达式模式。默认为 CODE_BLOCK_PATTERN。
  • detect_single_line_code bool, optional - 启用提取单行代码的新功能。默认为 False。

返回值

  • list - 包含语言和代码的元组列表。如果输入文本中没有代码块,则语言为 "unknown"。如果有代码块但未指定语言,则语言为空字符串。

generate_code

def generate_code(pattern: str = CODE_BLOCK_PATTERN,
**config) -> Tuple[str, float]

(openai<1) 生成代码。

参数

  • pattern Optional, str - 用于查找代码块的正则表达式模式。默认模式用于在 markdown 文件中查找代码块。
  • config Optional, dict - API 调用的配置。

返回值

  • str - 生成的代码。
  • float - 生成的成本。

improve_function

def improve_function(file_name, func_name, objective, **config)

(openai<1) 改进函数以实现目标。

improve_code

def improve_code(files, objective, suggest_only=True, **config)

(openai<1) 改进代码以实现给定的目标。

参数

  • files list - 包含源代码的文件名列表。
  • objective str - 要实现的目标。
  • suggest_only bool - 是否仅返回建议或改进后的代码。
  • config 可选, dict - API 调用的配置。

返回值

  • str - 如果 suggest_only=False,则为改进后的代码;如果 suggest_only=True(默认值),则为建议列表。
  • float - 生成的成本。

is_docker_running

def is_docker_running() -> bool

检查 Docker 是否正在运行。

返回值

  • bool - 如果 Docker 正在运行,则为 True;否则为 False。

in_docker_container

def in_docker_container() -> bool

检查代码是否在 Docker 容器中运行。

返回值

  • bool - 如果代码在 Docker 容器中运行,则为 True;否则为 False。

execute_code

def execute_code(
code: Optional[str] = None,
timeout: Optional[int] = None,
filename: Optional[str] = None,
work_dir: Optional[str] = None,
use_docker: Union[List[str], str, bool] = SENTINEL,
lang: Optional[str] = "python") -> Tuple[int, str, Optional[str]]

在 Docker 容器中执行代码。 此函数在 MacOS 上未经过测试。

参数

  • code 可选, str - 要执行的代码。 如果为 None,则将执行由 filename 指定的文件中的代码。 必须提供 code 或 filename 中的一个。
  • timeout 可选, int - 最大执行时间(以秒为单位)。 如果为 None,则使用默认超时时间。默认超时时间为 600 秒。在 Windows 上,当 use_docker=False 时,不会强制执行超时。
  • filename 可选, str - 保存代码的文件名或当 code 为 None 时存储代码的位置。 如果为 None,则将创建一个随机生成的文件。 随机生成的文件将在执行后被删除。 文件名必须是相对路径。相对路径是相对于工作目录的。
  • work_dir 可选, str - 代码执行的工作目录。 如果为 None,则使用默认工作目录。 默认工作目录是 "path_to_autogen" 下的 "extensions" 目录。
  • use_docker list, str 或 bool - 用于代码执行的 Docker 镜像。 默认值为 True,表示代码将在 Docker 容器中执行。将使用默认的镜像列表。 如果提供了镜像名称的列表或字符串,则代码将在成功拉取的第一个镜像的 Docker 容器中执行。 如果为 False,则代码将在当前环境中执行。 预期行为:
    • 如果未设置 use_docker(即默认为 True)或显式设置为 True,并且 Docker 包可用,则代码将在 Docker 容器中运行。
  • 如果 use_docker 没有设置(即默认为 True)或者明确设置为 True 但是缺少 Docker 包或者 Docker 没有运行,将会引发错误。
  • 如果 use_docker 明确设置为 False,代码将在本地运行。 如果代码在当前环境中执行,代码必须是可信的。
  • lang 可选, str - 代码的语言。默认为 "python"。

返回值

  • int - 如果代码成功执行,返回 0。
  • str - 如果代码执行失败,返回错误消息;否则返回标准输出。
  • image - 当使用 Docker 时,容器运行后的 Docker 镜像名称。

generate_assertions

def generate_assertions(definition: str, **config) -> Tuple[str, float]

(openai<1) 为一个函数生成断言。

参数

  • definition str - 函数定义,包括函数签名和文档字符串。
  • config 可选, dict - API 调用的配置。

返回值

  • str - 生成的断言。
  • float - 生成的成本。

eval_function_completions

def eval_function_completions(responses: List[str],
definition: str,
test: Optional[str] = None,
entry_point: Optional[str] = None,
assertions: Optional[Union[str, Callable[
[str], Tuple[str, float]]]] = None,
timeout: Optional[float] = 3,
use_docker: Optional[bool] = True) -> Dict

(openai<1) 从响应列表中选择一个响应,用于函数补全任务(使用生成的断言),并/或者使用黄金测试评估任务是否成功。

参数

  • responses list - 响应列表。
  • definition str - 输入的定义。
  • test 可选, str - 测试代码。
  • entry_point 可选, str - 函数的名称。
  • assertions 可选, str 或 Callable - 断言代码,用作响应的过滤器,或者断言生成器。 当提供时,只有通过断言的响应才会被考虑用于实际测试(如果提供)。
  • timeout 可选, float - 代码执行的超时时间。

返回值

  • dict - 成功的指标。

PassAssertionFilter

class PassAssertionFilter()

pass_assertions

def pass_assertions(context, response, **_)

(openai<1) 检查响应是否通过断言。

implement

def implement(
definition: str,
configs: Optional[List[Dict]] = None,
assertions: Optional[Union[str,
Callable[[str],
Tuple[str,
float]]]] = generate_assertions
) -> Tuple[str, float]

(openai<1) 从定义中实现一个函数。

参数

create_virtual_env

def create_virtual_env(dir_path: str, **env_args) -> SimpleNamespace

创建一个 Python 虚拟环境并返回上下文。

参数

  • dir_path str - 虚拟环境将被创建的目录路径。
  • **env_args - 传递给 EnvBuilder 的额外参数。

返回值

  • SimpleNamespace - 虚拟环境上下文对象。