mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-06-19 07:43:46 +08:00
33 lines
1.2 KiB
Ruby
Vendored
33 lines
1.2 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
require_relative "../../../evals/lib/runners/ai_helper"
|
|
require_relative "../support/runner_helper"
|
|
|
|
RSpec.describe DiscourseAi::Evals::Runners::AiHelper do
|
|
describe "#run" do
|
|
let(:llm) { Fabricate.build(:fake_model) }
|
|
let(:execution_context) { DiscourseAi::Completions::ExecutionContext.new }
|
|
let(:eval_case) { OpenStruct.new(args: { input: "We need new titles." }) }
|
|
let(:titles_agent) { DiscourseAi::Agents::TitlesGenerator.new }
|
|
let(:runner) { described_class.new("title_suggestions") }
|
|
|
|
before do
|
|
stub_runner_bot(agent: titles_agent) do |blk|
|
|
structured_output =
|
|
instance_double(
|
|
DiscourseAi::Completions::StructuredOutput,
|
|
read_buffered_property: ["Title One", "Title Two <input>ignored</input>"],
|
|
)
|
|
blk.call(structured_output, nil, :structured_output)
|
|
end
|
|
end
|
|
|
|
it "returns newline-separated suggestions when the helper outputs an array" do
|
|
result = runner.run(eval_case, llm, execution_context: execution_context)
|
|
|
|
lines = result[:raw].split("\n")
|
|
expect(lines).to contain_exactly("Title One", "Title Two ignored")
|
|
expect(result[:metadata]).to include(feature_name: "title_suggestions")
|
|
end
|
|
end
|
|
end
|