Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ OLLAMA_BASE_URL=http://localhost:11434
Обработка задачи 99 (164/164)
Модель 1/1: google_gemini-2_5-flash-preview (google/gemini-2.5-flash-preview)
Обработка задач завершена
...
```

Для проверки формата результата (не попадает ли в код посторонние теги) можно решить только одну задачу:
Expand Down
6 changes: 6 additions & 0 deletions config/models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,12 @@ openrouter:
note: https://openrouter.ai/moonshotai/kimi-k2
done: false

z-ai_glm_4:
name: z-ai/glm-4.5
provider: openrouter.ai
note: https://openrouter.ai/z-ai/glm-4.5
done: false

# Ollama модели
ollama:
ollama_llama3_2:
Expand Down
22 changes: 21 additions & 1 deletion lib/human_eval/solver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ def prepare_prompt(content)

# Логируем полный промпт
debug 'Полный промпт для отправки:'
debug "Длина промпта: #{prompt.length} символов"
debug '---BEGIN FULL PROMPT---'
debug prompt
debug '---END FULL PROMPT---'
Expand Down Expand Up @@ -212,13 +213,17 @@ def call_model_api(prompt, model_key, provider)
def process_model_response(raw_solution, model_name, output_file)
# Логируем полученный ответ
debug "Получено решение от модели #{model_name}"
debug "Длина ответа: #{raw_solution.length}"
debug '---BEGIN MODEL RESPONSE---'
debug raw_solution
debug '---END MODEL RESPONSE---'

# Извлекаем код из ответа
solution = extract_and_join_code_blocks(raw_solution)

debug "Длина извлеченного решения: #{solution.length}"
debug "Решение пустое после strip: #{solution.strip.empty?}"

# Проверяем, что решение не пустое
if solution.strip.empty?
error "❌ Модель #{model_name} вернула пустое решение!"
Expand Down Expand Up @@ -279,7 +284,7 @@ def prepare_openrouter_request(uri, model_name, prompt)
messages: [{ role: 'user', content: prompt }],
temperature: 0.1,
# max_tokens: 31_000, # 1000 - для всех, 31000 - для o3-mini-high
max_tokens: 1_000, # 1000 - для всех, 31000 - для o3-mini-high
max_tokens: 16_000, # Увеличиваем лимит для предотвращения обрезания
stream: false
}.to_json

Expand All @@ -302,6 +307,16 @@ def process_openrouter_response(response, model_name)
# Парсим JSON
parsed_response = JSON.parse(response.body)

# Добавляем отладку
debug "Полный ответ API: #{parsed_response.inspect}"

# Проверяем finish_reason
finish_reason = parsed_response.dig('choices', 0, 'finish_reason')
if finish_reason == 'length'
error "⚠️ Ответ модели #{model_name} был обрезан из-за лимита токенов (finish_reason: length)"
error 'Увеличьте max_tokens или сократите промпт'
end

# Извлекаем содержимое
content = parsed_response.dig('choices', 0, 'message', 'content')

Expand All @@ -312,6 +327,11 @@ def process_openrouter_response(response, model_name)
raise 'Пустой ответ от API'
end

debug "Извлеченное содержимое (длина: #{content.length}):"
debug '---BEGIN CONTENT---'
debug content
debug '---END CONTENT---'

# Кодируем в UTF-8
content.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?')
rescue JSON::ParserError => e
Expand Down
Loading