Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2025-02-16
2025-02-16
71
 [◀️ 프롬프트 엔지니어링](https://www.joinc.co.kr/w/LLM-NATIVE-APP-DEVELOP-004) [📑 목차](https://www.joinc.co.kr/w/LLM-NATIVE-APP-DEVELOP-001) ### 나의 첫 번째 LLM 애플리케이션 개발 이제 첫 번째 LLM 애플리케이션을 개발해보도록 하자. Vertex AI Gemini 모델을 사용하기 위한 권한을 확보해야 한다. **1. 서비스 계정을 사용**하는 방법과 2. 사용자 인증을 사용하는 두 가지 방법이 있는데, 서비스 계정을 사용하는 방법을 알아보겠다. LLM 애플리케이션은 GCP 위에서 개발 할 것이다. 따라서 GCP 에서 애플리케이션 개발을 위해서 필요한 기본적인 내용들도 함께 살펴볼 것이다. ### gcloud 설치 **gcloud**는 GCP의 다양한 서비스를 관리할 수 있도록 도와주는 **CLI** 소프트웨어다. 웹 브라우저 를 이용해서 **GCP 웹 콘솔**에 접속해서 클라우드 작업을 할 수 있긴 하지만 소프트웨어 기반으로 자동화하고 테스트하기 위해서는 gcloud의 사용이 필수 적이다. 맥과 윈도우즈의 경우 [cloud.google.com](https://cloud.google.com/sdk/docs/install-sdk?hl=ko) 문서를 참고하자. **패키지 목록 업데이트** ``` sudo apt update && sudo apt install -y curl apt-transport-https ca-certificates gnupg ``` **Google Cloud GPG 키 추가** ``` curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg ``` **Google Cloud SDK 저장소 추가** ``` echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list ``` **패키지 목록 업데이트 및 gcloud 설치** ``` sudo apt update && sudo apt install -y google-cloud-sdk ``` **테스트** ``` gcloud --version ``` `` **초기 설정** `` gcloud init **구글 계정으로 로그인** ``` gcloud auth login ``` ### 서비스 계정 생성 **IAM & Admin**으로 이동한다. 여기에서 프로젝트의 **서비스 계정**을 생성 할 수 있다. **서비스 계정**은 GCP의 VM 이나 Cloud Run 같은 자원을 수행 할 때 사용하는 특별한 유형의 계정이다. 우리가 GCP에 로그인 할 때 사용하는 계정은 인간이 사용하는 반면, 서비스 계정은 API 호출이나 GCP 리소스에 접근 하기 위해서 사용한다.  **+ CREATE SERVICE ACCOUNT** 를 클릭하여 서비스 계정을 만들 수 있다.  서비스 계정 이름과 ID를 설정한다.  **CREATE AND CONTINUE**를 클릭하여 **Grant this service account access to project** 단계로 넘어간다. 여기에서 Vertex AI API를 호출하기 위한 권한을 설정 할 수 있다. ### 서비스 계정 키 적용 gcloud CLI를 이용해서 서비스 계정 키를 활성화 한다. ``` gcloud auth activate-service-account --key-file [PATH_TO_YOUR_SERVICE_ACCOUNT_JSON] ``` gcloud auth list 명령으로 서비스 계정이 활성화되었는지 확인한다. ``` $ gcloud auth list Credentialed Accounts ACTIVE ACCOUNT * joinc-gemini-lab@my-llm-app-****.iam.gserviceaccount.com ``` 이제 ### CURL 로 테스트 기본 테스트가 끝났다 curl로 테스트를 해보자. Gemini API를 호출하기 위해서는 아래의 설정이 필요하다. ```bash cat << EOF > request.json { "contents": [ { "role": "user", "parts": [ { "text": "하늘은 왜 파란가요 ?" } ] } ] , "generationConfig": { "responseModalities": ["TEXT"] ,"temperature": 1 ,"maxOutputTokens": 8192 ,"topP": 0.95 }, "safetySettings": [ { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "OFF" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "OFF" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "OFF" }, { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "OFF" } ] } EOF PROJECT_ID="my-llm-app-xxxxx" LOCATION_ID="us-central1" API_ENDPOINT="us-central1-aiplatform.googleapis.com" MODEL_ID="gemini-2.0-flash-001" GENERATE_CONTENT_API="streamGenerateContent" curl \ -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://${API_ENDPOINT}/v1/projects/${PROJECT_ID}/locations/${LOCATION_ID}/publishers/google/models/${MODEL_ID}" -d '@request.json' ``` ### Python Application 개발 Python으로 Gemini LLM 애플리케이션 코드를 만들어보자. curl의 python 버전이라고 보면 될 것 같다. 작업 디렉토리를 만들고 python 가상환경을 만든다. ```shell mkdir 001-gemini-app cd 001-gemini-app virtualenv env source venv/bin/activate ``` 필요한 패키지를 설치하고, 서비스 어카운트 키 파일의 위치를 환경변수로 설정한다. ``` export GOOGLE_APPLICATION_CREDENTIALS="/<Your-directory>/<service-account-key.json>" ``` **app.py** ```python from google import genai from google.genai import types import base64 def generate(): client = genai.Client( vertexai=True, project="my-llm-app-xxxxx", location="us-central1", ) model = "gemini-2.0-flash-001" contents = [ types.Content( role="user", parts=[ types.Part.from_text(text="""하늘이 푸른 이유는 ?""") ] ) ] for chunk in client.models.generate_content_stream( model = model, contents = contents, ): print(chunk.text, end="") generate() ``` * 라이브러리 임포트: Vertex AI Gemini 기능을 사용하기 위해서 **google.genai** 라이브러리, 그리고 요청을 정의하기 위한 **google.genai.types**를 임포트했다. * 클라이언트 초기화: genai.Client를 이용해서 Gemini 클라이언트를 초기화 한다. 이때 PROJECT ID와 location을 설정한다. * 모델 설정: 사용 할 gemini 모델을 지정한다. 여기에서는 **gemini-2.0-flash-001**을 사용한다. * 컨텐츠 구성: Gemini 모델에 전달할 컨텐츠(자연어 요청)을 구성한다. 이 예제에서는 "하늘이 푸른 이유는 ?"을 담은 **types.Content** 객체를 생성한다. 컨텐츠는 역할(role)과 파트(parts)로 구성된다. 여기에서는 "user" 역할을 사용했다. * 응답 스트리밍: **client.models.generate_content_stream**을 이용해서 Gemini 모델로 부터 응답을 스트리밍 방식으로 받는다. 이를 통해서 사용자는 전체 대화를 기다리지 않고, 좀 더 빠르게 대화가 생성되는 것을 확인 할 수 있다. * 응답 출력: 응답은 청크 단위로 출력한다. end=""를 이용하면 줄바꿈 없이 계속하여 출력 할 수 있다. 코드를 실행해 보자. ``` $ python app.py 하늘이 푸르게 보이는 이유는 태양빛이 지구 대기를 통과하면서 **레일리 산란**이라는 현상 때문입니다. 좀 더 자세히 설명하면 다음과 같습니다: 1. **태양빛의 구성**: 태양빛은 빨간색, 주황색, 노란색, 초록색, 파란색, 남색, 보라색 등 다양한 색깔의 빛으로 이루어져 있습니다. 2. **대기 입자와의 충돌**: 태양빛이 지구 대기로 들어오면 공기 분자(주로 질소와 산소)와 같은 작은 입자들과 충돌합니다. 3. **레일리 산란**: 이 충돌 과정에서 빛이 사방으로 흩어지는데, 이 현상을 산란이라고 합니다. 특히 빛의 파장이 짧을수록 산란이 더 잘 일어납니다. 파장이 짧은 빛은 파란색과 보라색입니다. 4. **파란색이 더 많이 보이는 이유**: 보라색 빛도 파장이 짧지만, 태양에서 나오는 빛의 양이 파란색보다 적고, 우리 눈이 보라색에 덜 민감하기 때문에 하늘은 주로 파란색으로 보이게 됩니다. **결론적으로, 태양빛이 대기를 통과하면서 파장이 짧은 파란색 빛이 다른 색깔보다 더 많이 산란되어 우리 눈에 들어오기 때문에 하늘이 푸르게 보이는 것입니다.** 하지만 해가 질 무렵에는 하늘이 붉게 보이는 이유는, 태양빛이 대기를 더 긴 거리를 통과하면서 파장이 짧은 파란색 빛은 대부분 산란되어 없어지고, 파장이 긴 붉은색 빛이 우리 눈에 도달하기 때문입니다. ``` ##### Safety Filter 및 모델 파라미터 설정 LLM은 인터넷에서 가능한 모든 정보를 학습한다. 이 중에는 폭력, 혐오, 아동 학대, 성적 콘텐츠, 약물 등 유해한 컨텐츠를 포함하고 있다. 아래 코드는 Safety Filter와 모델 파라미터를 적용한 코드다. ```python generate_content_config = types.GenerateContentConfig( temperature = 1, top_p = 0.95, max_output_tokens = 8192, response_modalities = ["TEXT"], safety_settings = [types.SafetySetting( category="HARM_CATEGORY_HATE_SPEECH", threshold="LOW" ),types.SafetySetting( category="HARM_CATEGORY_DANGEROUS_CONTENT", threshold="LOW" ),types.SafetySetting( category="HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold="MEDIUM" ),types.SafetySetting( category="HARM_CATEGORY_HARASSMENT", threshold="OFF" )], ) for chunk in client.models.generate_content_stream( model = model, contents = contents, config = generate_content_config, ): print(chunk.text, end="") ``` **temperature**: 모델 출력의 다양성을 조절하는 매개변수다. 0에 가까울 수록 결정적이고, 2에 가까울 수록 다양하고 창의적인 출력을 생성한다. **top_p**: top-p(nucleus sampling)는 모델이 다음 단어를 선택할 때 확률 분포를 고려하는 방식이다. 0.95는 모델이 확률 합계가 95%가 되는 가장 가능성이 높은 단어 집합에서 다음 단어를 선택한다. 이렇게 하면 너무 관련 없는 단어가 선택되는 것을 방지하고 전체적인 텍스트의 품질을 유지 할 수 있다. **max_output_tokens**: 모델이 생성할 수 있는 최대 토큰 수다. 모델은 해당 토큰내에서 출력을 생성하려 시도한다. **safety_settings**: 모델의 안전 필터를 설정했다. 여기에서는 *HARM_CATEGORY_HATE_SPEECH (혐오 발언), HARM_CATEGORY_DANGEROUS_CONTENT (위험한 콘텐츠), HARM_CATEGORY_SEXUALLY_EXPLICIT (성적으로 노골적인 콘텐츠), HARM_CATEGORY_HARASSMENT (괴롭힘)*을 설정했다. 각 필터는 카테고리 별로 차단 수준(**threshold**)을 지정 할 수 있다. * OFF: 필터를 비활성화 한다. * LOW: 낮은 수준의 필터링 * MEDIUM: 중간 수준의 필터링 * HIGH: 높은 수준의 필터링 ### 멀티모달 애플리케이션 ##### 이미지 분석 Gemini는 이미지, 영상, 오디오 데이터를 분석/처리 할 수 있다. 이미지를 처리해 보자. 테스트할 이미지는 아래와 같다.  URL: https://i.namu.wiki/i/SETcWGVbZfYrGHmHfAZThUbpS8wIp9SzQlSrmfiqV5o-2eGwyPQ-OKnuK86C3S_T33w4hEKN1hQFGpDA1cjinA.webp ```python from google import genai from google.genai import types import base64 def generate(): client = genai.Client( vertexai=True, project="my-llm-app-448312", location="us-central1", ) image1 = types.Part.from_uri( file_uri="https://i.namu.wiki/i/SETcWGVbZfYrGHmHfAZThUbpS8wIp9SzQlSrmfiqV5o-2eGwyPQ-OKnuK86C3S_T33w4hEKN1hQFGpDA1cjinA.webp", mime_type="image/jpeg", ) model = "gemini-2.0-flash-001" contents = [ types.Content( role="user", parts=[ image1, types.Part.from_text(text="""이미지를 상세하게 설명해주세요. 장소, 위치, 분위기, 느낌등을 포함해서 알려주세요.""") ] ) ] generate_content_config = types.GenerateContentConfig( temperature = 1, top_p = 0.95, max_output_tokens = 8192, response_modalities = ["TEXT"], ) for chunk in client.models.generate_content_stream( model = model, contents = contents, config = generate_content_config, ): print(chunk.text, end="") generate() ``` 멀티모달 데이터는 크게 두 가지 방식으로 전달 할 수 있다. 1. 이미지를 base64 인코딩해서 모델에 직접 전달한다. 이미지 데이터가 API에 직접 포함되어 있어서 처리 속도가 빠르지만, 전송할 수 있는 데이터 용량 제한이 있을 수 있다. 2. 이미지의 URL을 모델에 전달한다. 모델은 URL의 이미지를 읽어서 처리한다. 이미지 파일 크기에 제한 없이 큰 이미지를 처리 할 수 있다. 본격적으로 멀티모달을 지원하는 애플리케이션을 만들 경우에는 이 방법을 사용한다. 보통 분석해야 할 이미지를 **gcs(google cloud storage)** 와 같은 클라우드 스토리지에 저장하고 URL을 넘기는 방식으로 시스템을 구성한다. ```python image1 = types.Part.from_uri( file_uri="https://i.namu.wiki/i/SETcWGVbZfYrGHmHfAZThUbpS8wIp9SzQlSrmfiqV5o-2eGwyPQ-OKnuK86C3S_T33w4hEKN1hQFGpDA1cjinA.webp", mime_type="image/jpeg", ) ``` types.Part.from_uri 에 file_uri에 분석 요청할 이미지의 URL을 설정했다. 그리고 **mime_type** 으로 파일의 종류를 정확하게 전달하고 있다. 코드를 실행해 보자. ``` 이 사진은 새해 전야에 뉴욕 타임스퀘어의 활기찬 장면을 담고 있습니다. 번잡한 도시의 중심부에 수많은 사람들이 모여 축제 분위기를 자아냅니다. 관중들은 길을 가득 메우고 있는데, 그들의 존재는 높은 에너지와 공유된 축하의 감각을 나타냅니다. 위로 머리를 들고 폭죽이 터지는 것을 바라보고 있습니다. 화려한 불꽃놀이가 하늘을 밝히며 밤하늘에 색채의 폭발을 일으킵니다. 불꽃의 광경은 사진에 역동적이고 기념적인 분위기를 더합니다. 타임스퀘어는 빛나는 광고판과 빛나는 간판으로 유명합니다. 이 이미지에서 광고판은 도시 경관에 활기와 스케일을 더하며 여러 브랜드 광고를 표시합니다. 사진은 새해 전야 축하의 흥분과 열정을 포착하여 시청자를 잊을 수 없는 축하의 순간으로 데려다줍니다. ``` ##### 유튜브 영상 분석 Vertex Gemini의 또 다른 강력한 능력은 "영상분석"이다. 아래는 테스트에 사용할 영상이다. <iframe width="560" height="315" src="https://www.youtube.com/embed/cjr0tAafxxE?si=rvuv0Ua_flMAs25Z" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> https://youtu.be/cjr0tAafxxE?si=rvuv0Ua_flMAs25Z ```python from google import genai from google.genai import types import base64 def generate(): client = genai.Client( vertexai=True, project="my-llm-app-448312", location="us-central1", ) video1 = types.Part.from_uri( file_uri="https://youtu.be/cjr0tAafxxE?si=rvuv0Ua_flMAs25Z", mime_type="video/*", ) model = "gemini-2.0-flash-001" contents = [ types.Content( role="user", parts=[ video1, types.Part.from_text(text="""영상의 내용을 상세히 분석해 주세요. 등장 인물, 장소, 현장 분위기, 전달 하려는 내용 등을 포함해 주세요.""") ] ) ] generate_content_config = types.GenerateContentConfig( temperature = 1, top_p = 0.95, max_output_tokens = 8192, response_modalities = ["TEXT"], safety_settings = [types.SafetySetting( category="HARM_CATEGORY_HATE_SPEECH", threshold="OFF" ),types.SafetySetting( category="HARM_CATEGORY_DANGEROUS_CONTENT", threshold="OFF" ),types.SafetySetting( category="HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold="OFF" ),types.SafetySetting( category="HARM_CATEGORY_HARASSMENT", threshold="OFF" )], ) for chunk in client.models.generate_content_stream( model = model, contents = contents, config = generate_content_config, ): print(chunk.text, end="") generate() ``` 코드를 실행해보자. **등장인물:** - 일론 머스크: 테슬라, 스페이스X 등 혁신적인 기업을 이끄는 CEO입니다. 영상에서는 정장을 입고 연설을 진행하고 있습니다. - 관중: 다양한 연령대의 사람들이 있으며, 일부는 "트럼프" 관련 모자를 쓰고 있습니다. 이들은 머스크의 연설을 듣고 환호하며, 휴대폰으로 사진이나 영상을 촬영하고 있습니다. - 배경 인물: 무대 뒤편에는 정장을 입은 사람들이 머스크를 바라보고 있고, 연설을 듣고 환호하고 있습니다. **장소:** - 무대: 붉은색 카펫이 깔려 있고, 흰색과 파란색으로 장식되어 있습니다. 무대 뒤편에는 흰색 바탕에 파란색 줄무늬와 별이 그려진 배경이 있습니다. 무대 중앙에는 "미합중국 대통령"이라는 문구가 새겨진 연설대가 놓여 있습니다. - 실내 경기장: 관중석이 가득 찬 것으로 보아, 많은 사람들을 수용할 수 있는 실내 경기장으로 추정됩니다. **현장 분위기:** - 열광적: 머스크가 무대에 등장할 때부터 관중들은 환호하고 박수를 치며 열광적인 분위기를 연출합니다. 연설 중간중간에도 환호와 박수가 터져 나옵니다. - 지지적: 관중들은 머스크의 발언에 긍정적으로 반응하며, 그의 의견에 동의하는 모습을 보입니다. 특히 "안전한 도시", "국경 강화", "화성 탐사" 등 특정 주제에 대한 언급에 더욱 열렬한 환호를 보냅니다. **전달하려는 내용:** - 승리 자축: 머스크는 연설 초반에 "이것이 승리의 기분"이라며 승리를 자축합니다. 이는 특정 사건이나 정치적 결과에 대한 승리를 의미하는 것으로 해석될 수 있습니다. - 미래에 대한 낙관적 전망: 머스크는 연설 전반에 걸쳐 미래에 대한 낙관적인 전망을 제시합니다. 그는 "안전한 도시", "국경 강화", "화성 탐사" 등 구체적인 목표를 언급하며, 더 나은 미래를 만들 수 있다는 희망을 불어넣으려고 합니다. - 청중과의 소통 및 감사: 머스크는 연설 도중 청중에게 감사를 표하고, 그들과 소통하려는 노력을 보입니다. 그는 "여러분이 있어 미래가 보장된다", "여러분을 위해 최선을 다하겠다" 등의 발언을 통해 청중과의 유대감을 강화합니다. - 애국심 고취: 머스크는 "미국 우주비행사가 다른 행성에 국기를 꽂는 것"을 언급하며 애국심을 고취하고 미국의 우월성을 강조합니다. **종합 분석:** 영상은 일론 머스크가 특정 지지자들 앞에서 연설하는 모습을 담고 있으며, 승리 자축, 미래에 대한 낙관적인 전망 제시, 청중과의 소통 및 감사, 애국심 고취 등을 주요 내용으로 합니다. 열광적인 분위기와 지지적인 청중들의 반응은 머스크의 영향력과 지지 기반을 보여줍니다. 영상의 내용을 현장감 있게 현장감 있게 잘 전달하고 있다. 더 놀라운 점은 "영어로 된 영상을 거의 완벽하게 한글로 번역하여 전달"하고 있다는 점이다. ### 정리 첫 번째 LLM 애플리케이션을 만들어봤다. LLM 애플리케이션과 기존 애플리케이션과의 차이점은 무엇일까 ? 정리하고 넘어가 보자 ##### 개발 패러다임 **기존 애플리케이션** 정확한 로직과 규칙에 기반하여 개발된다. 개발자는 명확한 요구사항을 정의하고 이를 코드로 구현한다. 예측가능하고 결정적인 결과물을 기대한다. **LLM 애플리케이션** 개발자는 학습된 모델을 이용하며, 프롬프트 엔지니어링을 통해 원하는 동작을 유도한다. 결과물은 확률적이며, 때로는 예측이 어렵다. ##### 로직의 작동방식 **기존 애플리케이션** 로직을 직접 개발해야 한다. **LLM 애플리케이션** 모델이 이미 데이터와 로직을 내장하고 있다. 개발자는 "로직을 개발 하는 대신", 프롬프트 엔지니어링을 통해 로직을 끄집어 낼 수 있도록 지시한다. ##### 개발 프로세스 **기존 애플리케이션** 요구사항 분석, 설계, 구현, 테스트, 배포 등 전통적인 소프트웨어 개발 생명 주기를 따른다. **LLM 애플리케이션** 모델 학습, 프롬프트 설계, 평가 및 디버깅, 파인튜닝 등 LLM 특화된 개발 프로세스를 가진다. ##### 테스트 및 디버깅 **기존 애플리케이션** 정의된 테스트 케이스를 통해 오류를 검증하고 수정한다. 결과가 결정적이기 때문에 각 테스트의 실패와 성공을 1 혹은 0으로 명확히 검토 할 수 있다. **LLM 애플리케이션** 모델의 출력을 평가한다. 이 출력은 비 결정적이고 의미적이기 때문에 1과 0으로 떨어지지 않는다. 정량적으로만 평가하기 힘들며, 정성적인 평가가 함께 들어가는 경우가 많다. ##### 성능 측정 **기존 애플리케이션** 응답 시간, 처리량 등 명확한 성능 지표를 측정 할 수 있다. **LLM 애플리케이션** 출력 결과의 정확성, 일관성, 자연스러움 등 주관적인 지표를 평가한다. 이런 이유로 많은 LLM 서비스들이 사람이 개입하는 평가 시스템(좋아요, 싫어요 등)을 도입하고 있다. ##### 사용자 상호작용 **기존 애플리케이션** 정해진 인터페이스를 통해 사용자와 상호작용한다. **LLM 애플리케이션** 자연어 기반으로 유연하고 다양한 방식으로 사용자와 상호작용 할 수 있다. 정해진 인터페이스가 있는게 아니라서 사용자는 상호작용을 어려워 할 수 있다. 따라서 LLM에 맞는 UI/UX를 제공해야 한다.
Recent Posts
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Archive Posts
Tags
AI
vertex gemini 기반 AI Agent 개발
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags