SOY NV AI commited on
Commit
ead5574
Β·
1 Parent(s): ef22967

Improve Ollama error handling and connection checking - Add Ollama server connection check before API calls - Improve error messages for better debugging - Add detailed error logging for Ollama communication errors

Browse files
Files changed (1) hide show
  1. app/routes.py +20 -3
app/routes.py CHANGED
@@ -3059,6 +3059,17 @@ def chat():
3059
  response_text = '응닡을 생성할 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μ‹œλ„ν•΄μ£Όμ„Έμš”.'
3060
  else:
3061
  # Ollama API 호좜
 
 
 
 
 
 
 
 
 
 
 
3062
  # μž…λ ₯ 토큰 수λ₯Ό num_ctx둜 μ‚¬μš©
3063
  num_ctx = get_model_token_limit_by_type(answer_model, 100000, 'input')
3064
  num_predict = get_model_token_limit_by_type(answer_model, 8192, 'output')
@@ -3189,12 +3200,18 @@ def chat():
3189
 
3190
  return jsonify(response_data)
3191
 
3192
- except requests.exceptions.ConnectionError:
3193
- return jsonify({'error': 'Ollama μ„œλ²„μ— μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€. Ollamaκ°€ μ‹€ν–‰ 쀑인지 ν™•μΈν•˜μ„Έμš”.'}), 503
 
 
3194
  except requests.exceptions.Timeout:
3195
  return jsonify({'error': '응닡 μ‹œκ°„μ΄ μ΄ˆκ³Όλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 짧은 λ©”μ‹œμ§€λ₯Ό μ‹œλ„ν•΄λ³΄μ„Έμš”.'}), 504
3196
  except Exception as e:
3197
- return jsonify({'error': f'Ollama 톡신 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€: {str(e)}'}), 500
 
 
 
 
3198
  else:
3199
  # λͺ¨λΈμ΄ μ„ νƒλ˜μ§€ μ•Šμ€ 경우 κΈ°λ³Έ 응닡
3200
  response_text = f"μ•ˆλ…•ν•˜μ„Έμš”! '{message}'에 λŒ€ν•œ 닡변을 μ€€λΉ„ μ€‘μž…λ‹ˆλ‹€.\n\n쒌츑 ν•˜λ‹¨μ—μ„œ 둜컬 AI λͺ¨λΈμ„ μ„ νƒν•˜λ©΄ 더 μ •ν™•ν•œ 닡변을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€."
 
3059
  response_text = '응닡을 생성할 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μ‹œλ„ν•΄μ£Όμ„Έμš”.'
3060
  else:
3061
  # Ollama API 호좜
3062
+ # Ollama μ„œλ²„ μ—°κ²° 확인
3063
+ try:
3064
+ # κ°„λ‹¨ν•œ μ—°κ²° ν…ŒμŠ€νŠΈ
3065
+ test_response = requests.get(f'{OLLAMA_BASE_URL}/api/tags', timeout=5)
3066
+ if test_response.status_code != 200:
3067
+ return jsonify({'error': f'Ollama μ„œλ²„μ— μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€. (μƒνƒœ μ½”λ“œ: {test_response.status_code}) Ollamaκ°€ μ‹€ν–‰ 쀑인지 ν™•μΈν•˜μ„Έμš”. Ollama URL: {OLLAMA_BASE_URL}'}), 503
3068
+ except requests.exceptions.ConnectionError:
3069
+ return jsonify({'error': f'Ollama μ„œλ²„μ— μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€. Ollamaκ°€ μ‹€ν–‰ 쀑인지 ν™•μΈν•˜μ„Έμš”. Ollama URL: {OLLAMA_BASE_URL}'}), 503
3070
+ except Exception as e:
3071
+ return jsonify({'error': f'Ollama μ„œλ²„ μ—°κ²° 확인 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€: {str(e)}. Ollama URL: {OLLAMA_BASE_URL}'}), 503
3072
+
3073
  # μž…λ ₯ 토큰 수λ₯Ό num_ctx둜 μ‚¬μš©
3074
  num_ctx = get_model_token_limit_by_type(answer_model, 100000, 'input')
3075
  num_predict = get_model_token_limit_by_type(answer_model, 8192, 'output')
 
3200
 
3201
  return jsonify(response_data)
3202
 
3203
+ except requests.exceptions.ConnectionError as e:
3204
+ error_msg = f'Ollama μ„œλ²„μ— μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€. Ollamaκ°€ μ‹€ν–‰ 쀑인지 ν™•μΈν•˜μ„Έμš”. (URL: {OLLAMA_BASE_URL})'
3205
+ print(f"[μ±„νŒ…] Ollama μ—°κ²° 였λ₯˜: {str(e)}")
3206
+ return jsonify({'error': error_msg}), 503
3207
  except requests.exceptions.Timeout:
3208
  return jsonify({'error': '응닡 μ‹œκ°„μ΄ μ΄ˆκ³Όλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 짧은 λ©”μ‹œμ§€λ₯Ό μ‹œλ„ν•΄λ³΄μ„Έμš”.'}), 504
3209
  except Exception as e:
3210
+ error_msg = f'Ollama 톡신 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€: {str(e)}'
3211
+ print(f"[μ±„νŒ…] Ollama 톡신 였λ₯˜ 상세: {str(e)}")
3212
+ import traceback
3213
+ traceback.print_exc()
3214
+ return jsonify({'error': error_msg}), 500
3215
  else:
3216
  # λͺ¨λΈμ΄ μ„ νƒλ˜μ§€ μ•Šμ€ 경우 κΈ°λ³Έ 응닡
3217
  response_text = f"μ•ˆλ…•ν•˜μ„Έμš”! '{message}'에 λŒ€ν•œ 닡변을 μ€€λΉ„ μ€‘μž…λ‹ˆλ‹€.\n\n쒌츑 ν•˜λ‹¨μ—μ„œ 둜컬 AI λͺ¨λΈμ„ μ„ νƒν•˜λ©΄ 더 μ •ν™•ν•œ 닡변을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€."