You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:35:00