测试
用于帮助你测试 AI 驱动系统的模拟组件
当你测试一个代理时,你不希望每次测试运行都真正向 OpenAI、Anthropic 或任何其他提供商发起 API 调用。真实调用速度慢、费用高,而且每次返回的结果都不同,这会让你的测试不稳定且昂贵。RAG 代理也是如此:你不想为了验证代理的逻辑就启动一个向量数据库或调用嵌入 API。
Neuron 自带可直接替换的测试替身,解决了这个问题。 FakeAIProvider 替换 AI 提供者, FakeEmbeddingsProvider 替换嵌入提供者,以及 FakeVectorStore 替换向量存储。它们返回预设响应,绝不会访问网络,并记录每一次交互,因此你可以精确断言你的代理做了什么。
设置
创建一个 FakeAIProvider 用你期望模型返回的响应进行配置,然后将其注入到你的代理中:
use NeuronAI\Chat\Messages\Stream\AssistantMessage;
use NeuronAI\Testing\FakeAIProvider;
$provider = new FakeAIProvider(
new AssistantMessage('你好!我能帮你什么?')
);
$agent = MyAgent::make()->setAiProvider($provider);响应会按顺序返回。如果你的代理对提供者进行了多次调用(例如工具调用),请排队多个响应:
$provider = new FakeAIProvider(
new AssistantMessage('第一条响应'),
new AssistantMessage('第二条响应'),
);聊天
流式传输
假的提供者会将响应文本拆分成多个块,模拟真实流:
你可以使用 setStreamChunkSize():
结构化输出
提供一个与输出类 schema 匹配的 JSON 字符串。代理将像往常一样对其进行反序列化和验证:
工具调用
当模型决定调用某个工具时,它会返回一个 ToolCallMessage。代理执行该工具,然后回到提供者获取最终答案。请将两次响应都排队:
断言
FakeAIProvider 包含可在测试中使用的内置断言:
检查请求
如需更高级的检查,可以访问原始记录的请求:
RAG
RAG 代理除了 AI 提供者外,还依赖嵌入提供者和向量存储。Neuron 提供 FakeEmbeddingsProvider 和 FakeVectorStore 以在测试中同时替换这两者。
FakeEmbeddingsProvider
生成确定性的嵌入,而无需调用任何外部 API。你需要嵌入提供者的任何地方都可以直接使用它:
FakeVectorStore
返回预设文档,来自 similaritySearch() 与传入的嵌入无关。将你想返回的文档传入构造函数:
RAG 聊天
添加文档
测试你的索引管道是否正确地嵌入并存储文档:
RAG 断言
最后更新于