SuperAPI AI 工具集

dspy-production-deployment

部署与运维

查看项目

更新于 10-16 02:38

技能介绍

用途:将 DSPy 程序准备为可重复、可观测、可扩展且更安全的生产执行环境。

主要能力与用法: 缓存加固:DSPy 默认启用内存与磁盘缓存,磁盘缓存反序列化默认使用 pickle。生产环境可启用白名单模式:dspy.configure_cache(restrict_pickle=True)。仅在需要时注册可信自定义缓存类型:dspy.configure_cache(restrict_pickle=True, safe_types=[MyResult, Metadata])。无法持久化数据或需要全新模型响应时可显式关闭某层缓存:dspy.configure_cache(enable_disk_cache=False, enable_memory_cache=True)。

保存与加载:优先使用仅状态的 JSON 以获得可读且更安全的产物:compiled.save("./artifacts/program.json", save_program=False),加载用 loaded = MyProgram(); loaded.load("./artifacts/program.json")。整程序保存仅用于可信产物,使用 cloudpickle:compiled.save("./artifacts/program/", save_program=True),加载用 dspy.load("./artifacts/program/")。加载已保存程序时需保持 DSPy 主版本兼容。

用量追踪:通过 dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"), track_usage=True) 开启,调用后可用 prediction.get_lm_usage() 查看;缓存命中的调用不返回新的 token 用量。

异步执行:多数内置模块支持 acall(),如 await program.acall(question="What is DSPy?");自定义异步模块需实现 aforward();仅在适配同步可调用对象是正确边界时使用 dspy.asyncify(program)。

流式输出:使用 dspy.streamify 配合 dspy.streaming.StreamListener(signature_field_name="answer"),通过 async for 迭代分块。对 ReAct 等循环模块,重复字段的监听器需设置 allow_reuse=True;缓存命中时直接产出最终 Prediction,不重放 token 分块。

生产检查清单:固定稳定的 DSPy 系列版本;除非必要且可信,否则使用仅状态 JSON 而非整程序 pickle;启用 restrict_pickle=True;记录用量、延迟、错误与追踪;分别对异步与流式路径做负载测试;MLflow 与回调可参考 dspy-debugging-observability。

限制:整程序保存依赖 cloudpickle,仅适用于可信产物;加载需保持 DSPy 主版本兼容;缓存命中不产生新 token 用量。官方文档:生产指南 https://dspy.ai/production/ ,缓存教程 https://dspy.ai/tutorials/cache/ ,保存教程 https://dspy.ai/tutorials/saving/ ,异步教程 https://dspy.ai/tutorials/async/ ,流式教程 https://dspy.ai/tutorials/streaming/ 。