作用

Custom Server 是一个专门用于存放无法归类到标准模块(如 Retriever、Generation、Evaluation 等)中的自定义工具函数(Tool)的 Server。所有不属于核心 Server 的逻辑工具(如:数据清洗、关键词提取、特定规则逻辑等)都可以归入 Custom Server。

示例:Search-o1 的查询提取 Tool

以下是 Search-o1 pipeline 中使用的一个自定义 Tool,用于从模型生成的回答中提取 <|begin_search_query|><|end_search_query|> 之间的搜索查询字符串:
servers/custom/src/custom.py
@app.tool(output="ans_ls->extract_query_list")
def search_o1_query_extract(ans_ls: List[str]) -> Dict[str, List[str]]:

    def get_query(text):
        import re
        pattern = (
            re.escape("<|begin_search_query|>")
            + r"(.*?)"
            + re.escape("<|end_search_query|>")
        )
        matches = re.findall(pattern, text, flags=re.DOTALL)

        if matches:
            query = matches[-1].strip()
            if not query.endswith("?"):
                query += "?"
            return query
        else:
            return "There is no query."

    query = [get_query(answer) for answer in ans_ls]

    return {"extract_query_list": query}
这个 Tool 的典型应用是在 generation 之后插入提取步骤,例如:
/images/yaml.svgexamples/search_o1.yaml
pipeline:
  - generation.generate
  - custom.search_o1_query_extract
  - retriever.retriever_search