Skip to content

[Feature]: 消息传递 #983

@moondaiy

Description

@moondaiy

在运行router example的时候 工具处理函数的消息直接打印到了控制台中,这个没有问题,但是有时候我们希望这次调用的结果 是一起返回来(一次调用,把中间过程的返回结果(比如worker的运行的结果))也通过最后msg中的字段返回给调用方,以方便后续处理,比如方便后端封装一下再发给前端使用。
Router: {
"type": "tool_use",
"id": "chatcmpl-tool-6fe9001646de48cca9fb6b92c3ab2829",
"name": "generate_python",
"input": {
"demand": "生成一个快速排序函数"
}
}
PythonAgent: 当然可以!以下是一个简洁高效的 快速排序(Quick Sort) 函数的 Python 实现:

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[len(arr) // 2]  # 选择中间元素作为基准
        left = [x for x in arr if x < pivot]
        middle = [x for x in arr if x == pivot]
        right = [x for x in arr if x > pivot]
        return quicksort(left) + middle + quicksort(right)
# 示例使用
if __name__ == "__main__":
    data = [3, 6, 8, 10, 1, 2, 1]
    print("原数组:", data)
    sorted_data = quicksort(data)
    print("排序后:", sorted_data)

输出:

原数组: [3, 6, 8, 10, 1, 2, 1]
排序后: [1, 1, 2, 3, 6, 8, 10]

特点:

  • 简洁易懂:使用列表推导式,代码清晰。
  • 稳定:相等元素的相对位置不变(因为 middle 保持原序)。
  • 时间复杂度
    • 平均情况:O(n log n)
    • 最坏情况:O(n²)(当每次选的 pivot 都是最小或最大值)
  • 空间复杂度:O(n)(由于递归和列表切片)

✅ 适合学习和小到中等规模数据排序。如需处理大数据或追求极致性能,可考虑原地排序版本(如使用索引交换)或使用 Python 内置的 sorted()list.sort()(它们使用 Timsort,更高效稳定)。
如果你需要一个**原地排序(in-place)版本(节省内存),我也可以为你提供!
system: {
"type": "tool_result",
"id": "chatcmpl-tool-6fe9001646de48cca9fb6b92c3ab2829",
"name": "generate_python",
"output": [
{
"type": "text",
"text": "当然可以!以下是一个简洁高效的 快速排序(Quick Sort) 函数的 Python 实现:\n\npython\ndef quicksort(arr):\n if len(arr) <= 1:\n return arr\n else:\n pivot = arr[len(arr) // 2] # 选择中间元素作为基准\n left = [x for x in arr if x < pivot]\n middle = [x for x in arr if x == pivot]\n right = [x for x in arr if x > pivot]\n return quicksort(left) + middle + quicksort(right)\n\n# 示例使用\nif __name__ == \"__main__\":\n data = [3, 6, 8, 10, 1, 2, 1]\n print(\"原数组:\", data)\n sorted_data = quicksort(data)\n print(\"排序后:\", sorted_data)\n\n\n### 输出:\n\n原数组: [3, 6, 8, 10, 1, 2, 1]\n排序后: [1, 1, 2, 3, 6, 8, 10]\n\n\n### 特点:\n- 简洁易懂:使用列表推导式,代码清晰。\n- 稳定:相等元素的相对位置不变(因为 middle 保持原序)。\n- 时间复杂度:\n - 平均情况:O(n log n)\n - 最坏情况:O(n²)(当每次选的 pivot 都是最小或最大值)\n- 空间复杂度:O(n)(由于递归和列表切片)\n\n> ✅ 适合学习和小到中等规模数据排序。如需处理大数据或追求极致性能,可考虑原地排序版本(如使用索引交换)或使用 Python 内置的 sorted()list.sort()(它们使用 Timsort,更高效稳定)。\n\n如果你需要一个
原地排序(in-place)**版本(节省内存),我也可以为你提供!"
}
]
}
Router: 我已经根据您的需求生成了一个快速排序的 Python 函数,并提供了详细说明和示例。如果您还有其他需求,比如原地排序版本或进一步优化,请告诉我!

能否把tool_call的结果也一起返还给调用方,而不是只是打印的方式显示出来。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions