如何获取Instructor库发送给LLM的完整原始序列化提示?
获取Instructor库发送给LLM的原始序列化提示
- 配置
before_request钩子提取原始请求
初始化Instructor客户端时,通过before_request钩子可直接获取发送给LLM的完整原始请求数据,其中包含实际发送的序列化提示。示例代码:from openai import OpenAI import instructor class SimpleReview: rating: int comment: str def extract_raw_prompt(request): # 提取所有发送给LLM的消息,包含系统提示和用户输入 for msg in request.messages: if msg.role == "system": print("系统注入的Schema提示:", msg.content) elif msg.role == "user": print("用户输入内容:", msg.content) # 拼接得到完整原始提示 full_prompt = "\n".join([f"{msg.role}: {msg.content}" for msg in request.messages]) print("完整原始提示:", full_prompt) return request # 为客户端添加钩子 client = instructor.patch(OpenAI(), before_request=extract_raw_prompt) # 发起请求测试 review = client.chat.completions.create( model="gpt-3.5-turbo", response_model=SimpleReview, messages=[{"role": "user", "content": "评价这个产品:包装精美,但物流太慢"}] ) - 解析钩子中的请求对象
钩子接收的request参数是完整的ChatCompletion请求实例,直接访问request.messages就能拿到LLM实际接收的所有文本内容,其中系统消息是Instructor自动生成的JSON Schema约束,用户消息是你传入的内容,两者组合就是最终发送的提示。 - 去除Python类标识干扰
你之前看到的__main__.SimpleReview是Python类的内部标识,不会出现在发送给LLM的实际提示里,通过request.messages提取的内容是纯文本格式,完全对应LLM收到的信息。
内容的提问来源于stack exchange,提问作者jss367
相关产品推荐
相关产品推荐

