Class: CodeReviewAi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/code_review_ai/client/utils.rb,
lib/code_review_ai/client/initialize.rb,
lib/code_review_ai/client/code_review.rb,
lib/code_review_ai/client/branch_summary.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_token, ai_model, language) ⇒ Client

Initialize a new CodeReviewAi client

Parameters:

  • api_token (String)

    OpenAI API access token for authentication

  • ai_model (String)

    OpenAI model to use (e.g., ‘gpt-3.5-turbo’, ‘gpt-4’)

  • language (String)

    Output language for generated content



10
11
12
13
14
# File 'lib/code_review_ai/client/initialize.rb', line 10

def initialize(api_token, ai_model, language)
  @client = create_openai_client(api_token)
  @ai_model = ai_model
  @language = language
end

Instance Method Details

#conduct_code_reviewString

Conduct an AI-powered code review on the current branch Analyzes git diff and generates review comments using OpenAI

Returns:

  • (String)

    Generated code review comments



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/code_review_ai/client/code_review.rb', line 11

def conduct_code_review
  prompt = generate_prompt(CodeReviewAi::Prompts::CODE_REVIEW_TEMPLATE, @language)
  response = @client.chat(
    parameters: {
      model: @ai_model,
      messages: [
        {
          role: 'system',
          content: 'You are an assistant generating code review comments based on repository changes.'
        },
        {
          role: 'user',
          content: prompt
        }
      ]
    }
  )
  code_review_comments = process_response(response)
  apply_code_review_comments(code_review_comments)
rescue StandardError => e
  "Error communicating with OpenAI API: #{e.message}"
end

#generate_branch_summaryObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/code_review_ai/client/branch_summary.rb', line 7

def generate_branch_summary
  prompt = generate_prompt(CodeReviewAi::Prompts::BRANCH_SUMMARY_TEMPLATE, @language)
  response = @client.chat(
    parameters: {
      model: @ai_model,
      messages: [
        {
          role: 'system',
          content: 'You are an assistant summarizing git branch changes clearly and concisely.'
        },
        {
          role: 'user',
          content: prompt
        }
      ]
    }
  )
  summary = process_response(response)
  puts summary
rescue StandardError => e
  "Error generating branch summary: #{e.message}"
end