Computing, Engineering

Google Gemini Vs Copilot 동시 활용 간단 사용기

Terry-SignalAIs 2024. 5. 20. 23:39
반응형

저는 Google Gemini와 Copilot을 현재 유료 구독하고 있습니다. 이전에는 Anthrophic Clade3와 Chat GPT도 유료 모델로 오래 구독을 했었습니다. 원래 계획은 Clade를 계속 사용하고, Gemini의 무료 기간이 끝나면 구독을 종료 할 계획이었는데, 최근 Google I/O에서 Gemini가 1.5로 업데이트 되면서 상당한 성능 향상이 있었다고 해서, 일단 조금 더 사용해 보기로 하고 사용중인 상황입니다.

저는 공학적인 개념에 대한 설명, 그리고 이를 토의 하면서 그래프 출력으로 개념적인 Visualization 하는 작업을 AI와 자주 하고는 합니다. 이번에 업데이트된 Google Gemini를 사용해본 결과 상당히 실력이 상승한것을 확인 할 수 있었습니다. Clade의 경우 Context가 길게 입력 가능한것이 굉장한 장점이었습니다. 사용하면서 상당히 많은 데이터를 바탕으로 추론하는 작업에 장점을 보였었죠. 

이번에 Google Gemini의 경우 이 Context Size가 1M로 늘어났다고 합니다. PDF 분서 1500page 이상의 정보를 한꺼번에 받아서 내용을 기반으로 답변해 준다니 사용해 보지 않을수 없었습니다.

1. Question " 소 발생기의 투자 비용을 단위 면적당 방식으로 대략적인 값을 알 수 있을까?"

이 질문은 실제로 인터넷 정보를 바탕으로 Link 까지 제공하고 있습니다. 하지만 실제 예상 비용까지는 제시하지 않고 있는데 추가적인 요청을 하면 대략적인 비용을 Gemini는 알려 주네요. (정확하지는 않겠지만)

질소 발생기의 투자 비용은 단위 면적당으로 계산하기 어렵습니다. 질소 발생기의 가격은 다음과 같은 다양한 요소에 따라 결정되기 때문입니다.
  • 생산 방식: PSA(압력 스윙 흡착) 방식, 멤브레인 방식 등 생산 방식에 따라 가격이 크게 달라집니다. 일반적으로 PSA 방식이 더 고가입니다.
  • 생산 용량: 필요한 질소의 양(유량)에 따라 가격이 달라집니다. 유량이 클수록 가격이 높아집니다.
  • 질소 순도: 필요한 질소의 순도에 따라 가격이 달라집니다. 고순도 질소를 생산하는 장비일수록 가격이 높습니다.
  • 추가 기능: 압축 공기 내장 여부, 원격 모니터링 기능 등 추가 기능에 따라 가격이 달라집니다.
질소 발생기는 설치 면적이 비교적 작은 편이며, 일반적으로 가격에 설치 비용이 포함되어 있습니다. 따라서 단위 면적당 가격보다는 필요한 질소의 용량과 순도, 선호하는 생산 방식 등을 고려하여 질소 발생기 업체에 견적을 문의하는 것이 가장 정확한 투자 비용을 알 수 있는 방법입니다.
참고 자료:
이 자료들을 참고하시면 질소 발생기의 종류와 가격에 대한 대략적인 정보를 얻으실 수 있습니다.

2. 두번째로 1m^3 면적의 공간에 기체가 가득차 있을때, 온도 변화 시 발생하는 Pressure Delta를 계산하는 코드 작성을 요청 했습니다.

온도 변화에 따른 기체의 압력 변화는 이상 기체 상태 방정식(PV=nRT)을 통해 계산할 수 있습니다. 여기서 압력(P)은 온도(T)에 비례하며, 부피(V)와 기체의 몰수(n)는 일정하다고 가정합니다.
기체 혼합물의 경우, 각 기체의 부분 압력은 몰분율에 비례합니다. 따라서 공기 충진과 질소 99% 충진 상태에서 각 기체의 부분 압력을 계산하고, 온도 변화에 따른 압력 변화를 비교하여 그래프로 나타낼 수 있습니다.
우선 공기와 질소의 몰분율을 계산하고, 이상 기체 상태 방정식을 이용하여 온도 변화에 따른 압력 변화를 계산합니다.



위 그래프는 -40℃부터 80℃까지 온도 변화에 따른 공기 충진 상태와 질소 99% 충진 상태의 압력 변화를 보여줍니다. 두 경우 모두 온도가 증가함에 따라 압력이 선형적으로 증가하는 것을 확인할 수 있습니다.
또한, 질소 99% 충진 상태의 압력 변화가 공기 충진 상태보다 약간 더 작은 것을 볼 수 있습니다. 이는 질소의 몰 질량이 산소보다 작기 때문에 발생하는 현상입니다. 즉, 같은 온도 변화에서 질소 분자의 운동 에너지 변화가 산소 분자보다 작아 압력 변화가 상대적으로 작게 나타납니다.

제가 입력한 프롬프트가 부족했는지 충분히 제가 원하는 값을 제공해 주지는 않았습니다. 저는 섭씨 25도에서 1기압으로 충진한 상태에서 온도를 변화 시킬 경우 발생하는 압력 변화를 알고 싶었기 때문입니다. 값의 보정이 필요하네요. 추가 Prompt로 제가 알고 싶은 내용을 구체적으로 추가 하였습니다.

아래와 같은 Python Code를 작성해 주는군요. 코드를 살펴보니 개선사항이 좀 보입니다.

import numpy as np
import matplotlib.pyplot as plt

# 1. 공기 및 질소 99% 충진 상태의 조성 (몰분율)
air_composition = {'N2': 0.78, 'O2': 0.21, 'Other': 0.01}
n2_composition = {'N2': 0.99, 'Other': 0.01}

# 2. 온도 리스트 생성 (-40℃ ~ 80℃, 1℃ 간격)
temperatures = np.arange(-40, 81, 1)

# 3. 기체 상수 (R)
R = 0.0821  # L·atm/(mol·K)

# 4. 압력 변화 계산 (이상 기체 상태 방정식)
def calculate_pressure(composition, temperatures):
    pressures = []
    for T in temperatures:
        total_moles = sum(composition.values())
        partial_pressures = [composition[gas] * R * (T + 273.15) for gas in composition]
        total_pressure = sum(partial_pressures)
        # 25℃에서 1기압이 되도록 보정
        pressures.append(total_pressure / (298.15 * R))
    return pressures

air_pressures = calculate_pressure(air_composition, temperatures)
n2_pressures = calculate_pressure(n2_composition, temperatures)

# 5. 그래프 그리기
plt.figure(figsize=(10, 6))
plt.plot(temperatures, air_pressures, label='공기 충진')
plt.plot(temperatures, n2_pressures, label='질소 99% 충진')

# 6. 그래프 설정
plt.xlabel('온도 (℃)')
plt.ylabel('압력 (atm)')
plt.title('온도 변화에 따른 공기 및 질소 충진 상태의 압력 변화 (25℃에서 1기압 기준)')
plt.legend()
plt.grid(True)
plt.ylim(0.8, 1.4) # y축 범위 조정

# 7. 그래프 표시
plt.show()
 

 

위 코드를 Copilot에 입력하고 수정이 필요한 사항이 없는지 문의를 했습니다.

Copilot
제공해주신 코드를 살펴보았습니다. 코드는 이상 기체 상태 방정식을 사용하여 온도 변화에 따른 압력을 계산하고, 이를 그래프로 나타내는 것을 목적으로 하고 있습니다. 그러나, 몇 가지 수정이 필요합니다.
  1. total_moles 변수는 현재 조성의 합을 계산하고 있지만, 이 값은 변하지 않으므로 이상 기체 상태 방정식에 직접적으로 사용되지 않습니다. 대신, 각 기체의 몰 분율을 사용하여 부분 압력을 계산해야 합니다.
  2. partial_pressures 계산에서 각 기체의 몰 분율에 대한 곱셈이 필요합니다. 현재 코드는 각 기체의 몰 분율을 고려하지 않고 있습니다.
  3. 25℃에서 1기압으로 보정하는 부분은 현재 온도와 압력을 기준으로 계산되어야 합니다. 이를 위해 total_pressure를 25℃와 1기압에 해당하는 조건으로 나누어야 합니다.
import numpy as np
import matplotlib.pyplot as plt

# 1. Composition of air and 99% nitrogen-filled state (mole fraction)
air_composition = {'N2': 0.78, 'O2': 0.21, 'Other': 0.01}
n2_composition = {'N2': 0.99, 'Other': 0.01}

# 2. Create a list of temperatures (-40°C to 80°C, in 1°C increments)
temperatures = np.arange(-40, 81, 1)

# 3. Gas constant (R)
R = 0.0821  # L·atm/(mol·K)

# 4. Calculate pressure changes (using the ideal gas law)
def calculate_pressure(composition, temperatures):
    pressures = []
    for T in temperatures:
        # Calculate partial pressures for each gas
        partial_pressures = [composition[gas] * R * (T + 273.15) / 1 for gas in composition]
        total_pressure = sum(partial_pressures)
        # Adjust to 1 atm at 25°C
        pressures.append(total_pressure / (R * (25 + 273.15)))
    return pressures

air_pressures = calculate_pressure(air_composition, temperatures)
n2_pressures = calculate_pressure(n2_composition, temperatures)

# 5. Plotting the graph
plt.figure(figsize=(10, 6))
plt.plot(temperatures, air_pressures, label='Air-filled')
plt.plot(temperatures, n2_pressures, label='99% Nitrogen-filled')

# 6. Graph settings
plt.xlabel('Temperature (°C)')
plt.ylabel('Pressure (atm)')
plt.title('Pressure Changes of Air and 99% Nitrogen-Filled State with Temperature Variation (Standardized to 1 atm at 25°C)')
plt.legend()
plt.grid(True)

# 7. Display the graph
plt.show()

--- 상호 검증을 여러차레 시키고 고민을 한 결과 최종 Graph

여기까지 진행해본 결과 기존 Copilot(GPT)에 코딩 실력으로 많이 밀리던 Gemini가 거의 비슷한 수준으로 따라온 것을 경험할 수 있었습니다. 

프롬프트를 진행하면서 산으로 가는 경우가 있는데 상호 코드를 분석 시키니, 바로잡아 주는것이 보입니다. AI를 툴로 활용해서 코드를 만들고, 고민을 하다보면 개념적으로 잘 모르는 부분이 적용되거나 오류가 발생하는 부분이 있는데 이를 검증해 주는 용도로 상호 고민을 시키는방법은 유용할것 같다는 생각이 듭니다.

반응형