본문 바로가기
Computer Science/Open Source

[Open Source] ChatGPT

by Hwan,. 2022. 12. 4.
728x90
반응형

 

Chat GPT

 Chat GPT는 OpenAI 재단에서 GPT-3.5 모델로 만든 인공지능 챗봇이다. 

기존 3.0 버전도 성능이 좋았지만 ChatGPT는 직접 사용 해보고 꽤 충격을 받았다. 공식적으로는 해당 모델이 인터넷에 연결되어있지 않고, 2021년까지의 데이터를 기반으로 학습되었기 때문에 아래처럼 정확하지 않은 정보를 진실처럼 전달해주기도 한다.

하지만 공식 또는 지식과 같은 내용을 질문한다면 문맥 파악 능력과 정확하고 방대한 지식에 큰 충격을 받을 것이다.

개인적으로 웹 서비스를 만들면서 생겼던 문제를 Chat GPT에게 물어보면서 해결하는 과정을 글로 작성해보았다.

 

해당 모델에 대한 좀 더 자세한 내용은 아래 기사를 참고하자.

 

오픈AI, 'GPT-3.5' 모델 공개 - AI타임스

오픈AI가 대형 언어모델인 \'GPT-3\'의 뒤를 잇는 \'GPT-3.5\' 시리즈 모델을 선보였다. 자연어처리 모델 ‘다빈치-003’과 대화형 모델인 ‘챗GPT’다.다빈치-003은 인간의 피드백을 통한 강화학습을 이

www.aitimes.com

 


Chat GPT로 문제 상황 해결하기

 먼저 내가 겪은 문제 상황은 Flask 백엔드에서 ['A', 'B', 'C']와 같은 문자열 리스트 형태의 데이터를 render_template로 프론트에게 전달하면서 발생했다. 프론트에서 전달받은 데이터는 리스트가 아닌 문자열로 인식되었고 중간의 ' 기호를 코드로 나타내면서 아래처럼 ' 로 변환되어 표시되었다.

 

구글에서 검색해봤지만 명확한 이유가 설명된 글이 거의 없었고, 위와 비슷한 상황을 찾기 위한 검색어를 만드는 것 자체가 어려웠다. 그래서 AI에게 물어보기로 했다.

 

 

먼저 내 상황을 그대로 물어보았다. str.replace(/'/g, "\'"); 를 사용하여 해결할 수 있지만 복잡하고 번거로운 방법이라 추천하지 않는다고 한다. 아직 답변이 조금 부족하다고 생각해서 다시 질문해보았다.

 

처음보다 괜찮은 방법인 것 같지만 여전히 추천하지 않는다고 한다. AI가 추천하는 방법이 궁금해졌다.

 

여기까지만 봐도 충분히 해결할 수 있겠지만 내 코드에 이 내용을 어떻게 적용하면 좋을 지 물어보기로 했다.

작성한 코드의 일부를 그대로 복사해서 물어봐도 정확하게 알려주었다..!

 

AI가 알려준대로 코드를 수정해보자.

<script>
        var ticker_index = JSON.parse('{{ ticker_index | safe }}');
        var ticker_value = JSON.parse('{{ ticker_value | safe }}');
        var aver_step = "{{ aver_step }}"

        var chart = new Chart(document.getElementById(ticker).getContext('2d'), {
        type: 'line',
        data: {
            labels: ticker_index,
            datasets: [{
            label: 'Close Price',
            backgroundColor: 'transparent',
            borderColor: 'blue',
            data: ticker_value,
            }]
        },
        options: {
            scales: {
	    		yAxes: [{
	    			ticks: {
	    				stepSize : aver_step,
	    				fontSize : 12,
		    		}
		    	}]
		    }
        }
        });

    </script>
@app.route('/graph', methods=['GET', 'POST'])
def graph():
    if 'id' not in session:
        return render_template('signin.html')

    if request.method == 'POST':
        try:
            ticker = request.form.get("ticker")
            startdate = request.form.get("startdate")
            #enddate = request.form.get("enddate")
            enddate = datetime.now()
            interval = request.form.get("interval")
            kind = request.form.get("kind")
            
            yf_Ticker = yf.Ticker(ticker)
            
            ticker_data = yf_Ticker.history(start=startdate, end=enddate, interval=interval)[kind]
            ticker_index = (lambda origin: [str(tmp.strftime("%Y-%m-%d")) for tmp in list(origin.index)])(ticker_data)
            ticker_value = (lambda origin: [round(tmp, 2) for tmp in list(origin.values)])(ticker_data)
            aver_step = (max(ticker_value) - min(ticker_value)) / len(ticker_value)
            
            ticker_index_str = json.dumps(ticker_index)
            ticker_value_str = json.dumps(ticker_value)
        except Exception as e:
            return render_template('error_500.html', ticker=ticker, exception_msg=e)   
        
    elif request.method == 'GET':
        ticker = ""
        ticker_index = []
        ticker_value = []
        aver_step = 0
        
    return render_template('graph.html', ticker=ticker, ticker_index=ticker_index_str, ticker_value=ticker_value_str, aver_step=aver_step)

 

코드를 수정하고 다시 실행하여 정상적으로 제거된 걸 볼 수 있다.


후기

내가 위에서 물어본 질문은 사람이해도 크게 어렵지 않은 부분이었지만 하나의 예시일 뿐이고, Chat GPT는 학습한 거의 모든 데이터를 인간 전문가 정도의 수준으로 알고 있는 것 같다. 수학과 물리학 등의 이론을 물어보거나 이야기를 물어봐도 답해줄 수 있다. 잘못된 데이터로 학습하지만 않았다면 분야를 가리지 않는 방대한 분야의 지식을 왠만한 사람들보다 정확하게 (그리고 원한다면 영어, 러시아어, 중국어로도) 설명해준다.

드론 PID 튜닝

 

심지어 이런 위에서 말한 내용을 기억하고 새로운 내용을 추가한 답변을 하거나, 코드와 관련된 github 링크를 추천해주기도 한다.

 

이 글에서 모든 활용방법을 설명할 순 없고, 모든 답변이 다 정확한 건 아니지만 이 정도 수준만 되어도 현실의 다양한 문제를 질문하여 해결할 수 있었다.

만약 인터넷에 연결되어 전세계의 모든 데이터를 실시간으로 학습한다면 더 정교하고 방대한 신경망 모델이 될거라고 생각한다.

728x90
반응형

댓글