mirror of
				https://github.com/discourse/discourse-ai.git
				synced 2025-10-31 14:38:37 +00:00 
			
		
		
		
	* FEATURE: introduce a more efficient formatter Previous formatting style was space inefficient given JSON consumes lots of tokens, the new format is now used consistently across commands Also fixes - search limited to 10 - search breaking on limit: non existent directive * Slight improvement to summarizer Stop blowing up context with custom prompts * ensure we include the guiding message * correct spec * langchain style summarizer ... much more accurate (albeit more expensive) * lint
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #frozen_string_literal: true
 | |
| 
 | |
| require_relative "../../../../support/openai_completions_inference_stubs"
 | |
| 
 | |
| RSpec.describe DiscourseAi::AiBot::Commands::GoogleCommand do
 | |
|   fab!(:bot_user) { User.find(DiscourseAi::AiBot::EntryPoint::GPT3_5_TURBO_ID) }
 | |
| 
 | |
|   describe "#process" do
 | |
|     it "can generate correct info" do
 | |
|       post = Fabricate(:post)
 | |
| 
 | |
|       SiteSetting.ai_google_custom_search_api_key = "abc"
 | |
|       SiteSetting.ai_google_custom_search_cx = "cx"
 | |
| 
 | |
|       json_text = {
 | |
|         searchInformation: {
 | |
|           totalResults: "1",
 | |
|         },
 | |
|         items: [
 | |
|           {
 | |
|             title: "title1",
 | |
|             link: "link1",
 | |
|             snippet: "snippet1",
 | |
|             displayLink: "displayLink1",
 | |
|             formattedUrl: "formattedUrl1",
 | |
|           },
 | |
|         ],
 | |
|       }.to_json
 | |
| 
 | |
|       stub_request(
 | |
|         :get,
 | |
|         "https://www.googleapis.com/customsearch/v1?cx=cx&key=abc&num=10&q=some%20search%20term",
 | |
|       ).to_return(status: 200, body: json_text, headers: {})
 | |
| 
 | |
|       google = described_class.new(bot_user, post)
 | |
|       info = google.process("some search term")
 | |
| 
 | |
|       expect(google.description_args[:count]).to eq(1)
 | |
|       expect(info).to include("title1")
 | |
|       expect(info).to include("snippet1")
 | |
|     end
 | |
|   end
 | |
| end
 |