-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
在运行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的结果也一起返还给调用方,而不是只是打印的方式显示出来。