본문 바로가기

전체 글30

Langchain - 캐싱 LLM 애플리케이션을 개발 및 운영 하다보면 동일한 프롬프트로 반복해서 호출해야 하는 경우가 생긴다.이럴 경우 캐시를(적절하게) 사용 하여 비용적인 부분 및 퍼포먼스를 향상 시킬수 있다  메모리 캐싱로컬 시스템의 메모리를 사용from dotenv import load_dotenvimport os# 환경 변수 로드load_dotenv()# 환경 변수 사용azure_openai_api_key = os.getenv('azure_openai_api_key')azure_openai_endpoint = os.getenv('azure_openai_endpoint')azure_open_api_version = os.getenv('azure_open_api_version')azure_deployment_gpt4test .. 2024. 5. 10.
Langchain - Model 컴포넌트와 호출 방법 Model은 Langchain 에서 ChatGPT나 PaLM 모델을 추상화한 객체이다.보통 LLM모델들이 문장을 완성하는 LLM  기능 (질문에 대한 답변, 문서 요약, 아이디어 제공 등등)의 멀티모달 모델(__AzureOpenAI__)과,사람과 상호작용을 하는 채팅을 위한 챗봇 모델(__AzureChatOpenAI__), 이렇게 두 가지 모델을 제공한다. Langchain도 마찬가지로 이 두 가지 모델에 대한 추상화 계층을 제공하고 있다.LM은 입력된 프롬프트의 명령에 따라 답변을 내는 모델이다.ChatGPT, PaLM API등의 LLM 모델에 대한 추상화 객체를 제공한다. LLM 모델 객체를 생성하는 방법은 모델 제공자에 따라 다르며, 특히 모델 제공자에 따라서 지원하는 튜닝 가능한 패러미터들도 다르.. 2024. 5. 3.
Langchain - Hello Langchain Langchain은 여러 LLM 모델을 지원하는데, 주요 모델들만 살펴보면 Open AI ChatGPT, Google PaLM, Huggine Face, MS Azure ChatGPT, AWS BedRock, Anthropic claude 등을 지원한다.주요 모델 프로파이더는 https://python.langchain.com/docs/integrations/providers 를 참고하면 된다.지원하는 LLM에 따라서 Langchain의 기능이 일부만 제공되는 경우가 있는데, 예를 들어 Streaming 기능 같은 경우에는 지원 안되는 모델들이 많다.기능에 대한 지원 여부는 LLM 컴포넌트 쪽을 확인하면 된다.https://python.langchain.com/docs/integrations/llms/i.. 2024. 5. 3.
Langchain - 기본 구성 및 환경 셋팅 Langchain 개념Langchain은 복잡한 LLM 애플리케이션 개발을 돕기 위한 오픈소스 프레임워크 이다.여러 장점중에 LLM 종류에 상관없이 다양한 LLM으로 쉽게 계발이 가능하며외부 데이터 베이스나 벡터 데이터베이스 검색 엔진등의 외부 컴포넌트를 통합 하여 사용이 용이 하다LangSmith,LangServ등을 이용하여 모니터링 및 모델 평가등을 개발 가능 하게  한다.환경 구성miniconda https://docs.anaconda.com/free/miniconda/index.html  Latest Miniconda installer links by Python version — Anaconda documentationLatest Miniconda installer links by Python .. 2024. 5. 2.
React + IIS + Node.js 프론트 React 와 백앤드 Node.js(Reverse Proxy) 를 IIS 배포 하는 과정 입니다. 1. React 빌드 build폴더 내용 복사 하여 서버로 복사 합니다. npm run build 2. IIS 구성 Turn Windows Features on or off 클릭 => IIS 설치(node 에서 소켓을 사용할 경우 WebSocket Protocol 설치) IIS 설정 site 명(IIS 항목에 표시되는 이름) 입력 후 Physical path 경로 설정(1항목에서 복사한 폴더) Host Name 도메인 명 입력 (도메인 없을경우 아이피로 접근해야한다) 3.Node.js (Reverse Proxy) 1. 서브 응용 프로그램 생성 Alias명 입력후 임의의 폴더 설정(해당 폴더에 Web... 2023. 8. 7.
Azure OpenAI + Google Search API + Chroma Google Search API를 이용하여 검색된 내용을 Embeddings 하여 Chroma(Vector DB)에 넣고 Chroma의 내용을 OpenAI를 통해 Q&A하는 내용을 Python으로 만들어 보겠습니다. import os from langchain.utilities import GoogleSearchAPIWrapper from langchain.vectorstores import Chroma from langchain.embeddings import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chat_models import AzureChatOpenAI fro.. 2023. 6. 21.
7. Nginx 로드밸런싱 1) 로드밸런싱 서버에 가해지는 부하를 분산해주는 장치 또는 기술 *Scale up : 서버 자체의 성능을 높이는것 *Scale out : 여러 대의 서버를 두는것 로드 밸런싱은 Scale out과 연관된다. 2) 로드밸런싱의 종류 1. 하드웨어에서의 로드밸런싱 L4 로드 밸런싱 : OSI 7 계층 중 4계층 단에서 부하를 분산(IP,Port기준으로) L7 로드 밸런싱 : OSI 7 계층 중 7계층 단에서 부하를 분산(4계층 기능 포함(IP,Port), Http,Url 기준) 2.소프트웨어에서의 로드밸런싱 Nginx : 오픈소스 소프트웨어,Health Check 유료버전에서만 지원 HAProxy : 오픈소스 소프트웨어,Health Check지원 3) Nginx setting ubunt 기준 /etc/ng.. 2023. 5. 19.
6. Node.js Worker Thread 1) 개요 노드는 단일 스레드에서 실해되고, 이벤트 루프에는 한 번에 하나의 프로세스만 발생합니다. (병렬로 실행되지 않는다.) 만약 인 메모리에서 발생하는 대규모 데이터 세트의 복잡한 계산같은 CPU 자원을 많이 사용하는 코드가 있으면, 이 코드가 다른 프로세스가 실행되는걸 차단할 수도 있습니다. 마찬가지로, CPU 자원을 많이 사용하는 코드가 있는 서버에 요청하는 경우, 이 코드가 이벤트 루프를 차단하고 다른 요청들이 처리되지 않게 할 수도 있습니다. CPU 작업과 I/O 작업을 구분하는 게 중요합니다. 앞에서 말했듯이, Node.js 코드는 병렬로 실행되지 않습니다. 오직 I/O 작업만 비동기식으로 실행되므로, 병렬로 실행(Non Blocking I/O)됩니다. 그래서 워커 스레드는 I/O 집약적인.. 2023. 5. 19.
5. Nginx reverse proxy 설정 1) Reverse proxy 란 역방향 프록시는 클라이언트 요청을 가져와서 하나 이상의 프록시 서버에 요청을 보내고 응답을 가져오고 서버의 응답을 클라이언트에 전달하는 서비스입니다. 성능과 확장성 때문에 NGINX는 HTTP 및 비 HTTP 서버의 역방향 프록시로 자주 사용됩니다. 일반적인 역방향 프록시 구성은 Nginx를 Node.js, Python 또는 Java 애플리케이션 앞에 배치하는 것입니다. Nginx를 역방향 프록시로 사용하면 다음과 같은 몇 가지 추가적인 이점을 얻을 수 있습니다. 2) Reverse proxy 장점 로드 밸런싱 : Nginx는 클라이언트의 요청을 프록시 서버에 분산하기 위해 로드 밸런싱을 수행하여 성능, 확장성 및 신뢰성을 향상시킬 수 있습니다. 캐싱 : Nginx를 역.. 2023. 5. 18.
4. 배포 및 pm2 서비스 등록 1) Git 에서 소스 받기 배포할 소스를 Git에 Commit 후 Ubuntu에 설치된 git으로 소스를 내려 받는다 최초 소스를 clone 한다 git clone https://github.com/******/*****.git package.json 패키지를 설치하기 위해 명령어 위치는 package.json이 있는 폴더에서 실행 npm install 2) Pm2으로 서비스 등록 npm run 명령어로 실행 할 경우 터미널을 닫으면 실행이 중단되기때문에 pm2로 서비스 등록하여 데몬화 하여 사용 한다. pm2 설치 npm install -g pm2 pm2 버전 pm2 --version 소스js 폴더로 이동 pm2 start index.js 3) 재배포 git root 폴더에서 소스를 내려 받는다. g.. 2023. 5. 17.
3. Node.js 설치 방법 3가지 1) Ubuntu 리포지토리에서 가져와서 설치 방법 Ubuntu 리포지토리에 포함된 버전은 v12.22.9 sudo apt update sudo apt install nodejs npm 2) NodeSource에서 Node.js 설치 방법 여러 Node.js버전이 포함된 APT 저장소를 유지 제공 되는 버전 v18.x ,v17 ,v16 ,v14 16버전설치 curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt-get install -y nodejs *에러 발생시 processing archive /var/cache/apt/archives/nodejs_16.20.0-deb-1nodesource1_amd64.deb (--unpa.. 2023. 5. 17.
2. Nginx 설치 1) 서버의 패키지 목록 업데이트 sudo apt update sudo apt upgrade sudo apt autoremove 2) Nginx 설치 sudo apt install nginx 3) 실행 sudo service start nginx sudo service status nginx 4) Nginx Version 확인 nginx -v 5) Nginx 경로 sudo find / -name nginx.conf 6) nginx 구동 테스트 netstat -lntp 80번 포트가 리스닝되고 있으면 실행된 상태이다. 만약 netstat이 없다면 apt install net-tools 명령어로 설치 2023. 5. 17.
1. Visual Studio Code 에 SSH 연결 및 root 권한으로 실행 1) SSH 란 무엇인가? Secure Shell의 약자로 원격 접속을 이용하여 터미널 환경을 사용할 수 있도록 고안된 인터넷 프로토콜이다. Sheell로 원격 접속을 하는 것이므로 기본적으로 CLI상에서 작업을 하게 되고, 기본 포트는 22번이다. 자주 사용되는 SSH접속 프로그램으로는 Xshell, PuTTY, MobaXterm 등이 있다 2) Root 권한으로 실행하여 파일 편집 터미널로 실행하여 vim 편집기로 편집 할수도 있지만 우리는 VSCode 를 Root 권한으로 오픈하여 파일을 수정할수 있게 셋팅하여 사용 할 예정 입니다. // root 비밀번호 설정 sudo passwd root // /etc/ssh/sshd_config 파일 오픈 #PermitRootLogin prohibit-pass.. 2023. 5. 17.
[C#/WPF 키움 API 자동 매매] 프로젝트 구성 (1) 조건 검색 기반으로 자동 매수 매도 프로그램을 만드는 과정을 진행 하겠습니다. 1) 이전에 진행 했던 키움 증권 API 프로젝트 와 키워드 검색에서 생성 한 프로젝트를 첨부 하였습니다. 해당 프로젝트를 가지고 진행 하겠습니다. 2) WPF 앱(.NET Framework) 으로 프로젝트 생성 EEH.WPF.UI.KIWOOM 후 EEH/EEH.WINFORM.CONTROL.KIWOOM 프로젝트를 다운받아 참조 합니다. 3) NuGet에서 ModernUI.WPF를 설치 합니다. 4) App.xaml 에 리소스 추가 합니다. 5) WindowsBase,WindowsFormsIntegration 참조 추가합니다. EEH.WINFORM.CONTROL.KIWOOM 프로젝트는 윈폼으로 생성 되었는데 해당 프로젝트의 KH.. 2023. 4. 12.
[C#/WPF 키움 API] 키움 API_조건 검색 (6) (1) 조건 검색 다운로드 khAPI.GetConditionLoad(); //조건 검색 리스트 다운로드(프로그램 종료시 삭제 됩니다.) khAPI.OnReceiveConditionVer += khAPI_OnReceiveConditionVer; //조건 검색 리스트를 다운로드하면 발생 되는 이벤트(해당 이벤트에서 검색식 리스트를 받는다) //생성자에서 이벤트를 등록 한다. khAPI.OnReceiveConditionVer += khAPI_OnReceiveConditionVer; private void khAPI_OnReceiveConditionVer(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveConditionVerEvent e) { string s.. 2023. 4. 3.
[C#/WPF 키움 API] 키움 API_주문 및 잔고 (5) (1) 주문 khAPI.SendOrder("Order", 스크린 넘버, 계좌번호, 주문타입(1:매수,2:매도,3:매수취소,4:매도취소,5:매수정정,6:매도정정), 종목코드, 갯수, 가격, 매매타입(0:지정가,3:시장가); SendOrder(주문) => OnReceiveTrData(주문결과) => OnReceiveChejanData (체결정보) 생성자에 이벤트 등록 khAPI.OnReceiveChejanData += khAPI_OnReceiveChejanData; khAPI.OnReceiveTrData += khAPI_OnReceiveTrData; public int Order(string code, string accountNumber, int cnt, KHOrderType orderType, KHHog.. 2023. 3. 31.
[C#/WPF 키움 API] 키움 API_계좌 정보 및 주문 내역 (4) (1) 계좌 정보 및 구매 정보 입력 부분 khAPI.SetInputValue("계좌번호", accountNumber); khAPI.SetInputValue("비밀번호", ""); khAPI.SetInputValue("비밀번호입력매체구분", "00"); khAPI.SetInputValue("조회구분", "2"); //1 합산,2 개별 khAPI.CommRqData("GetAccountEvalutionBalance", "opw00018", 0, sn.No); 결과 부분(TRData 이벤트) 계좌정보 및 주문내역도 TR Data 로 결과를 리턴 받는다 계좌 총 구매 내역 khAPI.GetCommData(e.sTrCode, e.sRQName, 0, "총매입금액").ExTrim().ExLong(); khAPI... 2023. 3. 30.
[C#/WPF 키움 API] 키움 API_로그인/종목/실시간 시세 (3) (1) 로그인 khAPI:키움 ocx khAPI.CommConnect() : 로그인 창 오픈 메서드 (로그인 창 오픈 0이면 성공/1이면 실패 ) khAPI.GetConnectState() : 연결상태 메서트 (1이면 로그인 상태) 생성자에 이벤트 등록 khAPI.OnEventConnect += khAPI_OnEventConnect; public bool IsConnected { get { return khAPI.GetConnectState() != 0; } } private void khAPI_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e) { if (loginHandler.ExNotNull()) .. 2023. 3. 29.
[C#/WPF 키움 API] 프로젝트 생성 및 WPF에 키움OCX 바인딩 하기 (2) 개발툴 : Visual Studio 2019 ocx 32 비트 지원(2022 버전은 지원 안됨) : 키움OCX 컨트롤이 32비트 1. OCX 컨트롤 프로젝트 생성 (Windows Forms 컨트롤 라이브러리 .Net Framework) (1) 프로젝트 생성후 KHOpenAPILib 참조 추가 합니다. (Visual Studio 2019 관리자 모드로 실행) (2) 키움 OCX 컨트롤 도구상자에 등록 (C:\OpenAPI\khopenapi.ocx) 도구상자 에서 우클릭하여 항목 선택 클릭 합니다. COM 구성 요소 탭->찾아보기 (C:\OpenAPI\khopenapi.ocx) 선택 합니다. KHOpenAPI Control 체크후 확인 클릭 (3) KHCtrl 유저 컨트롤에 드래그 앤 드랍 Name : ax.. 2023. 3. 27.
[C#/WPF 키움 API ] API 신청 및 환경 설정 (1) 키움 API를 통해 주식 자동 매매 프로그램을 만드는 과정을 진행 하겠습니다. 주 개발 언어는 c# 이고 UI 는 WPF로 구현 하겠습니다. https://www1.kiwoom.com/h/customer/download/VOpenApiInfoView?dummyVal=0 키움증권 대한민국 주식시장 점유율 1위 www.kiwoom.com 1) Open API 신청 하기 2) OpenAPI+ 모듈 다운로드 및 설치 3) KOA Studio 다운로드 4) KOA Studio 설정 폴더 : C:\OpenAPI 에 KOAStudioSA.zip 파일 압축 해제한 파일을 복사 합니다 5) 상시 모의투자 신청하기 2023. 3. 27.