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: 使其更加健壮。
提取代码
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, 可选 - 用于查找代码块的正则表达式模式。默认值为 CODE_BLOCK_PATTERN。detect_single_line_code
布尔值, 可选 - 启用新功能以提取单行代码。默认为 False。
返回:
list
- 一个包含语言和代码的元组列表。 如果输入文本中没有代码块,语言将为“unknown”。 如果有代码块但未指定语言,语言将为空。
生成代码
def generate_code(pattern: str = CODE_BLOCK_PATTERN,
**config) -> Tuple[str, float]
(openai<1) 生成代码。
参数:
pattern
可选, str - 用于查找代码块的正则表达式模式。 默认模式用于在markdown文件中查找代码块。config
可选, 字典 - API调用的配置。
返回:
str
- 生成的代码。float
- 生成的成本。
改进函数
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
列表 - 包含源代码的文件名列表。objective
str - 要达到的目标。suggest_only
bool - 是否仅返回建议还是改进后的代码。config
可选, 字典 - API调用的配置。
返回:
str
- 如果 suggest_only=False,则为改进后的代码;如果 suggest_only=True(默认),则为建议列表。float
- 生成的成本。
is_docker_running是否正在运行
def is_docker_running() -> bool
检查docker是否正在运行。
返回:
bool
- 如果docker正在运行则为True;否则为False。
在Docker容器中
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,将执行指定文件中的代码。 必须提供code或filename之一。timeout
可选, 整数 - 最大执行时间,单位为秒。 如果为None,将使用默认超时时间。默认超时时间为600秒。在Windows上,当use_docker=False时,超时不会被强制执行。filename
可选参数,str - 要保存代码的文件名,或当code
为None时,代码存储的位置。 如果为None,将创建一个具有随机生成名称的文件。 随机生成的文件在执行后将被删除。 文件名必须为相对路径。相对路径是相对于工作目录的。work_dir
可选, str - 代码执行的工作目录。 如果为None,将使用默认的工作目录。 默认的工作目录是"path_to_autogen"下的"extensions"目录。use_docker
list, str or bool - The docker image to use for code execution. Default is True, which means the code will be executed in a docker container. A default list of images will be used. If a list or a str of image name(s) is provided, the code will be executed in a docker container with the first image successfully pulled. If False, the code will be executed in the current environment. Expected behaviour:- 如果
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
可选, 字典 - 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
列表 - 响应列表。definition
str - 输入的定义。test
可选, 字符串 - 测试代码。entry_point
可选, str - 函数的名称。assertions
可选, str 或 Callable - 作为响应过滤器的断言代码,或断言生成器。 当提供时,只有通过断言的响应才会被考虑用于实际测试(如果提供)。timeout
可选,浮点数 - 执行代码的超时时间。
返回:
dict
- 成功指标。
PassAssertionFilter
class PassAssertionFilter()
断言通过
def pass_assertions(context, response, **_)
(openai<1) 检查响应是否通过断言。
实现
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) 根据定义实现一个函数。
参数:
definition
str - 函数定义,包括签名和文档字符串。configs
列表 - 用于完成的配置列表。assertions
可选, str 或 Callable - 作为响应过滤器的断言代码,或断言生成器。
返回:
str
- 实现。float
- 实施的成本。int
- 生成实现的配置索引。
create_virtual_env
def create_virtual_env(dir_path: str, **env_args) -> SimpleNamespace
创建一个 Python 虚拟环境并返回上下文。
参数:
dir_path
str - 将在其中创建环境的目录路径。**env_args
- 传递给EnvBuilder
的任何额外参数
返回:
SimpleNamespace
- 虚拟环境上下文对象。