반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

Temporary

2024. 10. 28. 01:03 | Posted by 솔웅


반응형

제가 참여하고 있는 AI Study Group에서 과제가 하나 부여 됐는데요.

이 과제의 최종 목표는 이것입니다.

 

[삼성전자]사업보고서(2024.03.12).pdf
2.13MB
[한국전력공사][정정]사업보고서(2024.03.29).pdf
3.66MB
[현대자동차]사업보고서(2024.03.13).pdf
2.28MB

 

 

이런 기업들의 사업보고서를 주면 아래와 같은 관련 Table을 만들어야 하는 겁니다.

 

연결 포괄손익계산서.xlsx
0.01MB
연결 재무상태표.xlsx
0.02MB
연결 손익계산서.xlsx
0.01MB

 

 

굉장히 복잡한 작업이 될 것 같습니다.

 

AI를 사용해서 만들려면

일단 Prompt를 잘 만들어서 여러번 시도하는 방법을 생각해 볼 수 있겠구요.

FineTunning 을 해서 사업보고서를 관련된 표로 만드는 전문 LLM 모델로 키우는 방법도 생각해 볼 수 있겠습니다.

 

저는 이것을 AI Agent 방식으로 접근해 보기로 했습니다.

이 방법이 올바른 방법인지는 모르겠지만 일단 AI Agent 실전 경험도 쌓을 겸 도전 해 보기로 했습니다.

 

Tool 은 LangGraph 와 Streamlit 을 사용할 계획입니다.

 

하기 전에 일단 ChatGPT에게 질문을 해서 잘 만들어 내는지 확인해 봤습니다.

ChatGPT가 표를 만들어서 답을 주는건 힘들 것 같어서 csv 포맷을 사용하기로 했습니다.

 

그리고 일단 테스트로 표의 일부분만 만들어 줄 것을 요청했습니다.

 

Prompt 는 아래와 같이 사용했습니다.

 

당신은 PDF 형식으로 된 기업의 사업보고서를 바탕으로 재무 상태 표를 만드는 전문가입니다.
        해당 PDF 파일을 읽고 아래 내용에 해당 되는 곳에 숫자를 채워 주세요.
        해당하는 내용이 없으면 - 로 표시해 주세요.
        csv 는 , 로 구분 되기 때문에 숫자를 넣을 때 , 를 넣으면 혼동됩니다.
        그러므로 숫자에 , 가 들어가 있으면 없애고 숫자만 넣어 주세요. 

        csv로 표기된 table 형식은 아래와 같습니다.
        아래 내용에 해당 되는 곳에 숫자를 채워 주세요.

        ,,,[삼성전자]사업보고서(2024.03.12),,
        ,,,2023년,2022년,2021년
        ,,,,,
        자산,,,,,
        자산,유동자산,,,,
        자산,유동자산,현금및현금성자산,,,
        자산,유동자산,유동금융자산,,,
        자산,유동자산,매출채권및기타채권,,,
        자산,유동자산,재고자산,,,
        자산,유동자산,당기법인세자산,,,
        자산,유동자산,유동비금융자산,,,
        자산,유동자산,매각예정자산,,,
        자산,유동자산,단기금융상품,,,
        자산,유동자산,기타금융자산,,,
        자산,유동자산,매출채권,,,
        자산,유동자산,기타채권,,,
        자산,유동자산,기타자산,,,
        자산,유동자산,금융업채권,,,
        자산,유동자산,매각예정비유동자산,,,
        자산,유동자산,단기상각후원가금융자산,,,
        자산,유동자산,단기당기손익-공정가치금융자산,,,
        자산,유동자산,미수금,,,
        자산,유동자산,선급비용,,,
        자산,유동자산,기타유동자산,,,
        자산,유동자산,매각예정분류자산,,,

 

ChatGPT는 아래와 같이 답변 했습니다.

 

 

일단  PDF 에 있는 내용을 토대로 필요한 데이터를 가져와서 csv 포맷으로 만드는 작업은 잘 하는 것 같았습니다.

여기서 문제는 이 데이터가 맞는지 안 맞는지 체크해야 한다는 것과 입력 context 도 훨씬 커지고 답변도 훨씬 복잡하면 이런 prompting을 수 없이 많이 해야 한다는 것과 그렇다고 해서 원하는 답을 얻을 수 있을지 확실하지 않다는 겁니다.

 

그래서 csv 포맷으로 답변을 만드는 Agent (csvCreator) 와 그 답변을 Check 하는 Agent (csvChecker)를 만들기로 했습니다.

그래서 csvCreator는 표를 만들고 csvChecker는 그 표를 검토해서 제대로 표를 만들지 못했으면 다시 csvCreator 에게 재 작성하라고 보내게 됩니다.

이 과정이 계속 반복되면서 csvCheker가 표를 완료하게 되면 csvChecker는 이를 검토하고 작업을 끝마치는 구조 입니다.

 

일을 하는 AI Agent Application의 Architecture는 아래와 같이 만들어 보았습니다. 

 

 

csvUpdater를 따로 만들어서 기존 답을 Update 하는 Agent를 추가 할까도 생각했는데... 그건 나중에 필요하면 추가하기로 학 일단 이렇게 가장 간단한 Architecture를 만들었습니다.

 

일단 이 작업을 하기 위해서는 RAG 기능 부터 만들어야 합니다.

 

PDF 를 읽어와서 Chunk 들로 나누고 이것을 Embedding 값으로 vector store에 저장하는 일을 해야 합니다.

그 이후에 질문이 들어오면 해당 질문을 토대로 vector store 에소 symantic search를 사용해 관련 데이터를 추려내서 LLM 에 보내야 합니다.

 

이 작업을 하기 위해 일단 csvCreator 까지만 만들어 보기로 했습니다.

지금 작업하고 있는 Architecture는 이런 모양 입니다.

 

 

지금 상황은 일단 RAG 기능은 잘 진행이 되는 것 같은데 csvCreator 가 답을 제대로 못 만들어 내고 있습니다.

Prompt는 위에 ChatGPT에게 물었던 것과 똑 같은 Prompt 인데 답은 아래와 같이 만들어 냅니다.

 

Output from node 'csvCreator':

 
{
 
"messages":[
0
:
"AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_HPTirIBwICx4gmJZZP5FebGU', 'function': {'arguments': '{"query":"삼성전자 2023년 사업보고서 재무상태표"}', 'name': 'Retrieve_Financial_Information'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_90354628f2'}, id='run-41417d19-b6bb-4983-b6df-2095dc3e8765-0', tool_calls=[{'name': 'Retrieve_Financial_Information', 'args': {'query': '삼성전자 2023년 사업보고서 재무상태표'}, 'id': 'call_HPTirIBwICx4gmJZZP5FebGU', 'type': 'tool_call'}])"
]
}

 

반응형


반응형

시애틀 근처 Bothell 이란 곳에 IONQ 라는 회사가 양자 컴퓨터 제조 공장을 건설했습니다.

작년 일인데요.

 

이곳에 한국 투자자 그룹이 방문한다는 이야기를 듣고 같이 동행을 부탁했었습니다.

인솔자분인 가을바람월드님이 흔쾌히 수락해 주셔서 얼마전 IONQ 제조 현장에 갔습니다.

직접 양자 컴퓨터 제조 현장도 구경하고 임원분들하고 면담할 기회도 가졌습니다.

 

한국에서 온 투자자 분들 뿐만 아니라 시애틀지역에 있는 양자 전문가 분들도 참가하셔서 아주 좋은 정보들도 많이 얻을 수 있었습니다.

 

이날 방문 중에 IONQ 주식이 10% 넘게 폭등해서 참가자들 모두 현장에서 기쁨을 만끽 할 수 있었습니다.

저는 AI 를 공부하고 있는 사람으로서 양자 AI 에도 관심이 많이 있습니다.

 

나중에 실력이 되면 기술적인 협업을 할 수 있기를 바라면서 IONQ의 기술 담당 전무인 Dean 과 특히 얘기를 많이 나누고 사진도 찍었습니다.

 

준비를 많이 해서 조만간 다시 IONQ를 방문해서 기술적인 Discussion을 할 수 있기를 기원해 봅니다.

 

https://youtu.be/LUVKTjM4ukU 

 



반응형


반응형
오늘 비디오는 구독자님이 Streamlit ,LangChain 그리고 LangGraph 에서 Chatbot 기능을 지원하기 위한 Memory 기능의 차이점을 문의 하셔서 거기에 대한 답변을 드리기 위해 만들었습니다.
답변을 준비하다 보니까 그냥 댓글로 몇마디 할 만한 사항이 아니더라구요.
AI 가 처음 나왔을 때 LangChain 에서는 Input Context 의 Length limit 에 대한 고민을 많이 했었던 것 같습니다.
그래서 대화 히스토리 관리하는데 있어서 input context를 줄이는 방법에 집중을 했었습니다. (Conversational Memory)
하지만 이 기능은 AI Model 들이 input context의 크기를 대폭 늘리면서 더 이상 필요성이 대두 되지는 않은 것 같습니다.
곧이어 나온 RAG 기능을 제대로 지원할 수 있는 대화 history 관리 툴을 LangChain에서는 제공 했습니다. (Conversation Retrieval Chain)
그런데 AI 세계는 멈추지 않았습니다.
좀 더 복잡한 문제를 해결하는 AI 서비스를 제공하기 위해 AI Agent 개념이 나왔습니다. (CheckPointer)
이것을 설명하기 위해서 AI , RAG , AI Agent 이런 AI App 개발의 트렌드 변화까지 다 말하게 됐네요.
반응형