复制线程¶
您可能希望复制(即“分叉”)现有的线程,以便保留现有线程的历史记录,并创建独立的运行,这些运行不会影响原始线程。本指南将展示如何进行操作。
设置¶
此代码假设您已经有一个线程可供复制。您可以在这里了解线程的概念此处,并在此教程中学习如何在某个线程上流式传输运行。
SDK初始化¶
首先,我们需要设置客户端以便能够与托管的图进行通信:
复制一个线程¶
下面的代码假设你想要复制的线程已经存在。
复制一个线程将创建一个具有与现有线程相同历史的新线程,然后允许你继续执行运行。
创建副本¶
验证副本¶
我们可以验证前一个线程的历史确实正确复制:
def remove_thread_id(d):
if 'metadata' in d and 'thread_id' in d['metadata']:
del d['metadata']['thread_id']
return d
original_thread_history = list(map(remove_thread_id,await client.threads.get_history(<THREAD_ID>)))
copied_thread_history = list(map(remove_thread_id,await client.threads.get_history(copied_thread['thread_id'])))
# 比较两个历史
assert original_thread_history == copied_thread_history
# 如果通过了断言,则输出
print("历史记录相同。")
function removeThreadId(d) {
if (d.metadata && d.metadata.thread_id) {
delete d.metadata.thread_id;
}
return d;
}
// 假设 `client.threads.getHistory(threadId)` 是一个异步函数,返回一个字典列表
async function compareThreadHistories(threadId, copiedThreadId) {
const originalThreadHistory = (await client.threads.getHistory(threadId)).map(removeThreadId);
const copiedThreadHistory = (await client.threads.getHistory(copiedThreadId)).map(removeThreadId);
// 比较两个历史
console.assert(JSON.stringify(originalThreadHistory) === JSON.stringify(copiedThreadHistory));
// 如果通过了断言,则输出
console.log("历史记录相同。");
}
// 示例用法
compareThreadHistories(<THREAD_ID>, copiedThread.thread_id);
输出:
历史记录相同。