Study Programming 110

[AI 기초개념] LLM, AI Agent, Agent Engine, Function Calling, LangChain 개념 잡기

LLM, AI Agent, Agent Engine, Function Calling, LangChain 개념 잡기 LLM 이란? - 방대한 양의 텍스트 데이터를 학습하여, 인간처럼 자연스러운 언어를 이해하고 생성하는 딥러닝 기반의 인공지능 모델 - Large Language Model의 약자Large : 모델이 학습한 데이터의 양과 모델 자체의 크기가 어마어마하게 크다는 의미입니다. 인터넷의 방대한 텍스트와 책 수백만 권에 달하는 정보를 학습하고, 수천억 개의 파라미터(매개변수)를 통해 미묘한 언어적 패턴을 익힙니다.Language : 인간의 '언어'를 처리하는 데 특화된 모델입니다. 글을 읽고, 쓰고, 요약하고, 번역하는 등 언어와 관련된 모든 작업을 수행할 수 있습니다.Model : 통계적, 수학..

[Imagen 4/4] Build a Multi-Modal GenAI Application: Challenge Lab (멀티모달 생성형 AI 애플리케이션 빌드: 챌린지 실습)

Build a Multi-Modal GenAI Application: Challenge Lab(멀티모달 생성형 AI 애플리케이션 빌드: 챌린지 실습) Challenge scenario시나리오:AI 기반 꽃다발 디자인 회사의 개발자입니다. 고객이 꿈꾸는 꽃다발을 설명하면, 시스템은 고객의 승인을 위해 사실적인 이미지를 생성합니다. 사용자 경험을 더욱 향상시키기 위해 최첨단 이미지 분석 기능을 통합하여 생성된 꽃다발에 대한 설명적 요약을 제공합니다. (...생략...) 작업 1) generate_bouquet_image(prompt)이름의 Python 함수 추가 - 이 함수는 제공된 prompt를 사용하여 imagen-3.0-generate-002 모델을 호출하고 이미지를 생성하여 로컬에 저장 ..

[Imagen 3/4] Build an application to send Chat Prompts using the Gemini model (Gemini 모델을 사용하여 채팅 프롬프트를 보내는 애플리케이션을 구축)

Build an application to send Chat Prompts using the Gemini model (Gemini 모델을 사용하여 채팅 프롬프트를 보내는 애플리케이션을 구축) 목적Vertex AI의 생성 AI(genAI 또는 gen AI라고도 함)를 사용하면 Google의 대규모 생성 AI 모델을 활용하여 AI 기반 애플리케이션에 사용하기 위해 테스트, 조정 및 배포할 수 있습니다. 이 랩에서는 다음을 수행합니다.Vertex AI(Google Cloud AI 플랫폼)에 연결: Vertex AI SDK를 사용하여 Google AI 서비스에 연결하는 방법을 알아보세요.사전 훈련된 생성 AI 모델 로드 - 제미니: 처음부터 모델을 구축하지 않고도 강력하고 사전 훈련된 AI 모델을 사용하는 ..

[Imagen2/4] Build an AI Image Generator app using Imagen on Vertex AI (Vertex AI에서 Imagen을 사용하여 AI 이미지 생성기 앱을 빌드)

Build an AI Image Generator app using Imagen on Vertex AI(Vertex AI에서 Imagen을 사용하여 AI 이미지 생성기 앱을 빌드) 목적Vertex AI의 생성 AI(genAI 또는 gen AI라고도 함)를 사용하면 Google의 대규모 생성 AI 모델을 활용하여 AI 기반 애플리케이션에 사용하기 위해 테스트, 조정 및 배포할 수 있습니다. 이 랩에서는 다음을 수행합니다.Vertex AI(Google Cloud AI 플랫폼)에 연결: Vertex AI SDK를 사용하여 Google AI 서비스에 연결하는 방법을 알아보세요.사전 훈련된 이미지 생성 모델 로드: 처음부터 모델을 구축하지 않고도 강력하고 사전 훈련된 AI 모델을 사용하는 방법을 알아보세요...

[Imagen1/4] 1. Build an AI Image Recognition app using Gemini on Vertex (Vertex AI의 Gemini를 사용하여 AI 이미지 인식 앱 구축)

Build an AI Image Recognition app using Gemini on Vertex AI(Vertex AI의 Gemini를 사용하여 AI 이미지 인식 앱 구축) 목적Vertex AI의 생성 AI(genAI 또는 gen AI라고도 함)를 사용하면 Google의 대규모 생성 AI 모델을 활용하여 AI 기반 애플리케이션에 테스트, 조정 및 배포할 수 있습니다. 이 랩에서는 다음을 수행합니다.Vertex AI(Google Cloud AI 플랫폼)에 연결: Vertex AI SDK를 사용하여 Google AI 서비스에 연결하는 방법을 알아보세요.사전 훈련된 생성 AI 모델 로드 - 제미니: 처음부터 모델을 구축하지 않고도 강력하고 사전 훈련된 AI 모델을 사용하는 방법을 알아보세요.AI 모델..

topK와 topP의 차이

topK와 topP의 차이공통점 : AI 모델이 다음 단어를 선택하는 방식을 제어하여 답변의 다양성을 조절하는 기술차이점 : 선택 후보를 정하는 기준이 서로 다름 topK (Top-K 샘플링)가장 확률이 높은 K개의 단어만 후보로 놓고, 그중에서 다음 단어를 선택하는 방식낮은 값(예: 1)은 항상 가장 확률 높은 단어만 선택하게 되므로 답변이 매우 결정론적이 됨높은 값(예: 40)은 더 많은 선택지를 주어 답변의 다양성을 높임ex) Top-K: "무조건 판매량 상위 3개 중에서만 고르세요!"Top-K는 "등수(순위)를 기준으로 선택지를 제한하는 방식"만약 top_k=3으로 설정하면, 모델은 다음 단어 후보 중에서 가장 확률이 높은 1, 2, 3등 단어만 보고, 그중에서 하나를 무작위로 고릅니다. 4등..

변수명, 함수명, 클래스명 잘 짓는 방법 (Clean code: 2ch Naming)

이름을 잘 짓는 규칙들 의도를 분명히 밝힌다. - 변수나 함수 드리고 클래스명은 변수(나 함수 드리고 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 이란 질문들에 답할 수 있어야 한다. - 주석이 필요하지 않는 수준이어야 함 ㄴ> Bad example) int d; // 경과 시간 ㄴㄴ> Good example) int elapsedTimeInDays; 그릇된 정보를 피하라 (= 이름에 그릇된 단서를 남기면 안된다.) - 유사한 개념은 유사한 표기법을 사용한다. - 기발한 이름, 특정 유머나 문화권의 농담은 피하고 명료하게 표현하라. - 이름에 다른 타입이 포함된 경우  ㄴ> Bad example) List가 아닌 userList  ㄴ> Bad example) 유닉스 플랫폼이나 변종이름인 hp..

Study Programming 2023.11.20

Wrapper class (래퍼 클래스)

선수개념 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)이 있다. - Primitive type : char, int, float, double, boolean 등 - Reference type : class, interface 등 "Primitive type 을 Reference type 객체로 바꾸기 위해서 (포장해) 사용하는 클래스" 들을 ' Wrapper class (래퍼 클래스) ' 라고 합니다. 사용이유: primitive type의 데이터를 Reference type 객체로 표현해야 하는 경우가 있기에 변경방식 : primitive type의 데이터 값을 내부에 불변으로 두고 포장하여 만든다. (값 변경 시 새로 객체 생성해야함) Boxi..

Study Programming 2022.08.16

Blocking, Non-blocking, Sync, Async

Blocking vs NonBlocking : 딴 일하고 와도 돼? 차이점 : 호출된 함수가 바로 리턴(제어권 넘기)하느냐 마느냐 NonBlocking : 응 제어권 줄께, 너 딴 일하고 와 호출된 함수가 바로 리턴해 제어권을 넘겨서 호출한 함수는 자기 할 일 한다. Blocking : 안돼 끝날 때까지 넌 여기서 기다려 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 호출한 함수가 다른 일 못하고 대기하게 한다. Synchronous vs Asynchronous : 작업완료를 어떻게 알래? 차이점 : 호출한 함수가 '호출된 함수의 완료 여부'를 신경쓰냐 Async (Asynchronous, 비동기, 비동기화) : 너가 끝나고 연락해! 호출된 함수에게 callback..

Study Programming 2022.08.15

reflection 이란?

Reflection(리플렉션, 반영)? : 컴퓨터 프로그램에서 런타임 시점에 사용되는 자신의 구조와 행위를 관리(type introspection)하고 수정할 수 있는 프로세스를 의미 - “type introspection”은 객체 지향 프로그램언어에서 런타임에 객체의 형(type)을 결정할 수 있는 능력을 의미한다. - 코틀린에서 :: 인자를 리플랙션하기 위해 자주 사용한다. Ex) 자바 클래스를 인자로 넘기기 위해 코틀린 클래스 레퍼런스는 '클래스명::class'으로 표현 자바 클래스 레퍼런스는 '클래스명:class.java'으로 표현 출처 https://ko.wikipedia.org/wiki/%EB%B0%98%EC%98%81_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED..

[SOLID] DIP(=Dependency Inversion Principle, 의존관계 역전 원칙)

SOLID 원칙 중 마지막인 5. DIP(=Dependency Inversion Principle, 의존관계 역전 원칙) " '고수준 모듈'은 '저수준 모듈'의 구현에 의존해서는 안 된다. '저수준 모듈'이 '고수준 모듈'에서 정의한 추상 타입에 의존해야 한다." - 다른 말로 "자신보다 변하기 쉬운 것에 의존하 지 마라" - Ex) 고수준 모듈은 자동차 / 저수준 모듈은 스노우 타이어 - '추상화'를 이용해 문제 해결 - Ex) DIP 위반 사례 ⓐ 고수준 모듈인 자동차가 저수준 모듈인 스노우 타이어에 의존하는 상태 ⓑ 일반 타이어로 교체하기로 결정 ⓒ [문제] 의존하고 있던 자동차의 코드도 연쇄적으로 영향을 끼치게 됩니다.(개방-폐쇄 원칙을 위반) class Car(val tire: SnowTire)..

[SOLID] ISP(=Interface Segregation Principle, 인터페이스 분리 원칙)

SOLID 원칙 중 4번째인 1. ISP(=Interface Segregation Principle, 인터페이스 분리 원칙) " 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다." - 다른 말로 "클라이언트는 자신이 사용하는 메소드에만 의존해야 한다." - 클라이언트를 기준으로 인터페이스를 분리함으로써, 클라이언트로부터 발생하는 인터페이스의 여파가 다른 클라이언트에 미치는 영향을 최소화하는 것을 목표로 한다 - Ex) ISP 위반 사례 ⓐ interface Machine 에는 copy(), print(), fax(address: Address) 와 같은 모든 기능별 메소드가 선언되어 있다. ⓑ Machine을 상속받은 'class CopyMachine'는 copy() 외의 기능을..

[SOLID] OCP (=Open-Closed Principle, 개방 폐쇄 원칙)

SOLID 원칙 중 두번째인 1. OCP (=Open-Closed Principle, 개방 폐쇄 원칙) "확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다." - 다른 말로 "기능변경하거나 확장할 수 있으면서 그 기능을 사용하는 코드는 수정하지 않는다."를 의미 - 적용방법 (2가지) => 변화하는 부분을 추상화함으로써 기존 코드를 수정하지 않고도, 확장을 할 수 있게 만들어 줍니다. #1) 변화하는 부분을 추상화하는 것 -> 주로, 인터페이스를 통해서 구현을 합니다. #2) 상속을 이용하는 것 더보기 - ex) 상속을 사용 ⓐ HTTP 응답 프로토콜에 맞춰 데이터를 전송해 주는 ResponseSender 클래스가 존재한다. ⓑ 이때, 기존 기능에 압축 기능을 추가 필요한 상황 발생 ⓒ Respon..

[SOLID] SRP(=Single Responsibility Principle, 단일 책임 원칙)

SOLID 원칙 중 첫번째인 1. SRP : Single Responsibility Principle = 단일 책임 원칙 " 하나의 클래스는 하나의 책임을 가지고 책임을 캡슐화해야 한다. " - 다른 말로 "어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 함"을 의미 - 책임 이란? ㄴ> 기능변경 시 변화되는 부분을 하나의 책임의 단위로 묶을 수 있다. ㄴ> 각각의 책임은 서로 다른 이유로 변경되어야 한다. ex) 데이터를 읽어 오는 책임의 기능이 변경될 때 데이터를 보여주는 책임은 변하면 안 됩니다. - 왜 '단일 책임'을 가져야 하는가? ㄴ> 책임의 개수가 많아질수록 한 책임의 기능 변화가 다른 책임에 주는 영향이 비례해서 증가하기 때문에 확장 및 유지보수가 어려워진다. ㄴ> ex)..

[SOLID] 객체지향 SOLID 원칙 (=객체지향 5대 원칙=SOLID원칙)

본 포스팅에서 Design Pattern이라고 매번 쓰기 귀찮아 'DP'로 일컫으려고 합니다. 객체지향 SOLID 원칙 - [대략설명] 객체 지향 개발 시 가급적 지켜야할 5개 원칙의 약자 모음 - [상세설명] SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. - [종류] 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부다. - [배경] 로버트 마틴[1][2]이 2000년대 초반[3]에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙 SOLID 원칙 종류 SRP 단일 책임 원칙 (Single responsibility pr..

코드 스멜(code smell←코드 냄새)

코드 스멜(= code smell = 코드 냄새) : 컴퓨터 프로그래밍 코드에서 더 심오한 문제를 일으킬 가능성이 있는 프로그램 소스 코드의 특징을 가리킨다. 특징 - 애자일 프로그래머가 사용하는 용어이기도 하다 - 코드 스멜인지 아닌지의 여부를 결정하는 일은 주관적 - 자동으로 특정한 종류의 코드 스멜을 확인하기 위한 도구들이 있으며, 그 예로는 체크스타일, PMD, 파인드벅스 등 점점 안 좋은 단어만 많이 알아가는 기분이다 ㅋㅋㅋ 출처 https://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%EC%8A%A4%EB%A9%9C 코드 스멜 - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org

Android 인증서 관련 문제 발생 시 참고한 사이트

[이슈] 서버 인증서 갱신 시점에서 구단말에서 최신 서버인증서를 통한 인증이 수행되지 않아 javax.net.ssl.SSLHandshakeException 발생하며 서버 연동하지 못하는 이슈 발생 [도움]아래 '12.SSL 인증서 확인 사이트 - HiSEON'에서 인증서 추적하여 도움받았다. :-)bbb 진짜 막막했는데 관련 모든 사이트 감사드리며ㅠㅠ 추후 더 공부하여 포스팅하겠습니다. 1. 인증서 파일 형식 및 확장자의 차이점 비교 설명 (Certificate file format & extensions) | Knowledge Logger https://www.letmecompile.com/certificate-file-format-extensions-comparison/ 인증서 파일 형식 및 확장자의..

Study Programming 2022.05.23

Stateless protocol (무상태 프로토콜)

Stateless protocol (무상태 프로토콜) : 어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜 - Ex) 인터넷의 기반이 되는 토콜(IP)과 월드 와이드 웹의 데이터 통신의 토대가 되는 HTTP - 통신이 독립적인 쌍의 요청과 응답을 이룰 수 있게 하는 방식 - 서버가 복수의 요청 시간대에 각각의 통신 파트너에 대한 세션 정보나 상태 보관을 요구하지 않는다. cf) 상태 프로토콜(stateful protocol) : 서버의 내부 상태 유지를 요구하는 프로토콜 출처 - 위키백과 : https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%83%81%ED%83%9C_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C