-
Topic 18. 주가전망 매일매일 여러 llm들에게 물어보고 결과를 저장도 하고 싶다. 그래야 얼마나 제대로 예측했는지 나중에 평가해보지.
목표
AskLLM.bat AAPL NVDA TSLA
라고 입력하면 FinGPT를 이용하여 긴 prompt를 생성한 후, gpt-4, gemini pro, claude opus 한테 주가 전망을 물어보고 결과를 잘 저장해두는 게 목표가 되겠습니다.
원래 FinGPT가 llama2 기반으로 로컬에서 돌긴 하는데 pc가 느린 관계로 응답 속도가 위 상용 서비스들 대비 수십배 느리고 답장 품질도 안 좋아서 걍 수백억원짜리 상용 llm을 몇 센트씩 내고 쓰기로 했습니다.
이 페이지는 coding 얘기 가득이고 docker 얘기도 가득이라 관심없을 분들 대부분이라 봅니다만, 코딩은 잘 하지만 llm 어떻게 갖다 쓰는지 관심없었던 분들 대상으로 써봅니다. 코딩이 몇 줄밖에 안 되긴 한데 애초에 코딩 못 하시는 분들은 그 문턱 넘기도 어려울 거에요.
llm 에게 지식을 물어보는 방법을 찾아보면 여러가지가 있는 것 같던데
- 브라우저를 이용하여 무료 서비스에 매일 매일 긴 prompt를 넣고 copy paste하여 파일에 저장해둔다
- 브라우저를 selenium 이라는 도구로 자동화하여 위의 #1을 반복한다
- rest api라는 걸 이용하여 직접 각 llm 서비스에 물어본다
- embedding 이라는 api를 이용하여 각 회사/분야마다 다른 새 정보를 llm 에 넣어준 후 검색한다
- rag라는 방법론을 이용하여 검색 키워드로 사내 규정집/분야별 지식을 꺼내어 그 꺼낸 문서를 prompt에 같이 입력해준다
등 여러가지가 검색이 되었고, 이 가운데 #3을 선택하였습니다.
왜냐 하면, 내가 문서로 쌓아둔 것이 없으므로 참조할 지식이 없어 5번은 해당 사항이 없고, 내가 주입할 새로운 지식도 딱히 없으므로 4번도 해당 사항이 없고, 1번은 몇 번 해보니 손 노가다가 너무 심하고, 2번과 3번을 비교해본 결과 3번의 방법이 매우 간단하였습니다. 그래서 3번을 어떻게 하는지 여기에 써보려고 합니다.
프롬프트 수정
여러 llm 공통적으로 적용되는 사항으로, api를 사용하여 결과를 받아 평가를 하는 등의 분석에 사용하려면 답장의 포맷이 자연어이면 안 됩니다. 그래서 FinGPT의 system prompt를 약간 수정하여 아래와 같이 답장의 포맷을 정해줍니다. 상용 llm들이 모두 엄청 똑똑하여, 아래의 요구 사항을 chatgpt 3.5, gpt-4, gemini, copilot, claude 모두 잘 알아들었습니다. 즉 검색하면 json 포맷으로 답이 나옵니다.
prompt의 첫 부분에 있었던 답장 형식에 대한 요구 사항을 아래와 같이 수정.
– – – –
Your answer should be in JSON format as follows:{
“datetime”: “<ISO-8601 datetime in EST>”,
“positive_developments”: […],
“potential_concerns”: […],
“prediction_in_text”: …,
“analysis”: …,
“price_pct_change_direction_predicted”: “<UP or DOWN or NEUTRAL>”,
“price_pct_change_predicted_in_float”: …,
“price_pct_change_predicted_in_text”: …,
“target_trading_dates”: [next 5 trading days in ISO-8601 format in the US, not including today]
}
– – – —
이렇게 했더니 json 키와 내용 모두 한국어로 번역이 되는 문제가 생겨서, key는 번역하지 말라고 아래와 같이 프롬프트를 수정해주었따.“Provide all your responses in Korean, but keep the keys inside the JSON data in English.”
이렇게 해두고, 각 llm 서비스를 하나씩 보도록 합니다.

