본문 바로가기
AI 언어 모델

👀🔊🤖 Gemini 2.0 출시: 보고 듣고 말하는 멀티모달 라이브 챗봇을 지금 만나보세요.

by James AI Explorer 2024. 12. 14.
    728x90

    안녕하세요! 오늘은 구글이 최근에 발표한 멀티모달 AI 모델 Gemini 2.0에 대해 알아보겠습니다. Gemini 2.0은 2023년에 발표된 Gemini 1.0을 기반으로 한 후속 모델로, 더욱 향상된 성능과 다양한 기능을 자랑합니다. 이 모델은 텍스트, 이미지, 오디오, 비디오 등 다양한 형태의 데이터를 처리할 수 있으며, 특히 AI 에이전트 개발에 큰 중점을 두고 있습니다. Gemini 2.0은 더욱 빠르고 정확한 처리 능력을 바탕으로 다양한 작업을 지원하는 유니버설 어시스턴트로서의 가능성을 보여주고 있습니다. 이 블로그에서는 Gemini 2.0의 주요 기능, 성능 벤치마크 결과, 그리고 다양한 AI 에이전트 프로젝트에 대해 자세히 살펴보고, Live API를 활용한 멀티모달 챗봇을 만들어 보고 코딩, 수학, 추론성능을 테스트해 보겠습니다. 

    👀🔊🤖 Gemini 2.0 출시: 보고 듣고 말하는 멀티모달 라이브 챗봇을 지금 만나보세요.

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    Gemini 2.0 개요

    2023년 12월, 구글은 멀티모달 AI 모델인 Gemini 1.0을 발표하며 AI 분야에 큰 혁신을 가져왔습니다. Gemini 1.0은 텍스트, 이미지, 오디오, 비디오, 코드 등 다양한 형태의 정보를 이해하고 처리하는 능력을 보여주었습니다. 그리고 2024년 12월, 구글은 Gemini 2.0을 출시하며 '유니버설 어시스턴트'라는 비전에 한 발짝 더 다가섰습니다.

     

    Gemini 2.0은 이전 모델보다 더욱 뛰어난 성능과 향상된 기능을 제공하며, 특히 AI 에이전트 개발에 중점을 두고 있습니다. AI 에이전트는 사용자를 대신하여 특정 작업을 수행하거나 목표를 달성하도록 설계된 AI 시스템을 의미합니다. Gemini 2.0은 이러한 AI 에이전트가 더욱 지능적이고 효율적으로 작동하도록 강력한 기반을 제공합니다.

     

    https://blog.google/technology/google-deepmind/google-gemini-ai-update-december-2024/#gemini-2-0

     

    Introducing Gemini 2.0: our new AI model for the agentic era

    Today, we’re announcing Gemini 2.0, our most capable AI model yet.

    blog.google

     

    Gemini 2.0은 Gemini 1.5 Pro보다 2배 빠른 속도와 향상된 성능을 제공하며, 다음과 같은 주요 기능들을 포함합니다.

    • 향상된 멀티모달 기능: Gemini 2.0은 텍스트, 이미지, 오디오, 비디오 등 다양한 형태의 정보를 더욱 정확하게 이해하고 처리할 수 있습니다. 특히, 이미지와 텍스트를 결합하여 이미지를 생성하거나, 사용자 맞춤형 다국어 텍스트 음성 변환(TTS) 오디오를 출력하는 등 멀티모달 출력 기능이 크게 향상되었습니다.
    • 네이티브 툴 사용: Gemini 2.0은 구글 검색, 코드 실행, 서드파티 사용자 정의 함수 등 다양한 툴을 기본적으로 호출하여 사용할 수 있습니다. 이를 통해 AI 에이전트는 더욱 복잡하고 다양한 작업을 수행할 수 있습니다.
    • 빠른 응답 속도: Gemini 2.0은 짧은 지연 시간과 향상된 추론 속도를 제공하여 사용자 요청에 더욱 빠르게 응답합니다.
    • 강화된 공간 추론 능력: Gemini 2.0은 이미지 내 객체의 위치 및 관계를 더욱 정확하게 파악하는 능력을 갖추고 있습니다. 이는 더욱 정확한 이미지 분석 및 이해를 가능하게 합니다.
    728x90

    AI 에이전트 프로젝트: Astra, Mariner, Jules

    구글은 Gemini 2.0의 강력한 기능을 활용하여 다양한 AI 에이전트 프로젝트를 개발하고 있습니다. 이러한 프로젝트들은 Gemini 2.0을 기반으로 사용자 경험을 혁신적으로 변화시킬 잠재력을 가지고 있습니다.

    • Project Astra: 사용자의 일상생활을 지원하는 데 중점을 두는 Astra는 다양한 언어와 혼합 언어를 이해하고, 구글 검색, 구글 렌즈, 구글 맵스와 같은 툴을 활용하여 사용자에게 필요한 정보를 제공하고 작업을 대신 수행합니다. Gemini 2.0을 기반으로 한 이 AI는 비디오를 입력받아 사용자에게 현관문 비밀번호를 기억하거나, 세탁 방법, 길 찾기, 발음 교정 등을 도와줍니다. 또한, 다양한 언어로 질문에 답하고, 현지 랜드마크와 날씨 정보도 제공하며, 일상적인 상황에서 유용하게 활용될 수 있는 다양한 기능을 보여줍니다.

    Project Astra 설명 동영상 스크린샷

    • Project Mariner: 웹 브라우저에서 작동하는 AI 에이전트로, 웹 페이지의 정보를 이해하고 사용자의 웹 탐색 및 작업을 돕습니다. Mariner는 텍스트, 이미지, 코드, 양식 등 웹 페이지의 다양한 요소를 인식하고, 이를 활용하여 사용자 요청에 따라 정보 검색, 양식 작성, 웹 페이지 탐색 등 다양한 작업을 수행할 수 있습니다. 이 프로젝트는 크롬 확장 프로그램으로 작동하며, 구글 시트에 있는 회사 리스트를 웹사이트 검색 및 이메일 주소 수집 같은 복잡한 작업을 자동화합니다. 사용자는 에이전트의 작업 과정을 실시간으로 확인하고 언제든지 작업을 중단하거나 일시 정지할 수 있습니다.

    Project Mariner 데모 동영상 스크린샷

    • Jules: 개발자를 위한 AI 기반 코드 에이전트로, 주로 Python과 JavaScript 코딩 작업에 사용되며, 깃허브 워크플로우에 통합되어 코드 작성 및 오류 수정을 지원합니다. Jules는 개발자의 지시에 따라 코드를 작성하거나, 기존 코드에서 오류를 찾아 수정하는 등의 작업을 수행할 수 있습니다. 

    Jules 데모 동영상 스크린샷

     

    Gemini 2.0 벤치마크 결과

    Gemini 2.0 Flash Experimental은 전반적으로 이전 모델 대비 성능이 향상되었으며, 특히 코드 생성과 수학 문제 해결에서 우수한 성과를 보였습니다. 그러나 긴 문맥 처리, 추론, 오디오 번역 같은 일부 영역에서는 추가적인 개선이 필요합니다.

    능력 벤치마크 설명 Gemini 1.5 Flash 002 Gemini 1.5 Pro 002 Gemini 2.0 Flash Exp
    일반 MMLU-Pro 더 높은 난이도의 과제를 가진 여러 과목의 질문으로 구성된 MMLU 데이터셋의 향상된 버전 67.3% 75.8% 76.4%
    코드 Natural2Code Python, Java, C++, JS, Go 등의 코드 생성. HumanEval과 유사하며 웹에 공개되지 않은 데이터셋 79.8% 85.4% 92.9%
    Bird-SQL (개발) 자연어 질문을 실행 가능한 SQL로 변환하는 평가 기준 45.6% 54.4% 56.9%
    LiveCodeBench (코드 생성) Python에서 코드 생성. 2024년 6월 1일부터 10월 5일까지의 최근 예제를 포함하는 코드 생성 하위집합 30.0% 34.3% 35.1%
    사실성 FACTS Grounding 문서와 다양한 사용자 요청을 기반으로 사실적으로 정확한 응답을 제공하는 능력. 내부 데이터셋 사용 82.9% 80.0% 83.6%
    수학 MATH 대수학, 기하학, 미적분 등을 포함한 도전적인 수학 문제 77.9% 86.5% 89.7%
    HiddenMath 전문가들이 만든 AIME/AMC 수준의 대회용 수학 문제. 유출되지 않은 데이터셋 사용 47.2% 52.0% 63.0%
    추론 GPQA (다이아몬드) 생물학, 물리학, 화학 분야의 전문가들이 작성한 도전적인 데이터셋 51.0% 59.1% 62.1%
    긴 문맥 MRCR (1M) 새롭고 진단적인 긴 문맥 이해 평가 71.9% 82.6% 69.2%
    이미지 MMMU 다중 학문 수준의 멀티모달 이해 및 추론 문제 62.3% 65.9% 70.7%
    Vibe-Eval (Reka) 일상적인 예제를 포함한 시각적 이해. Gemini Flash 모델을 평가자로 사용하여 평가 48.9% 53.9% 56.3%
    오디오 CoVoST2 (21개 언어) 자동 음성 번역 (BLEU 점수) 37.4 40.1 39.2
    비디오 EgoSchema (테스트) 다양한 도메인에서 비디오 분석 66.8% 71.2% 71.5%
    • 코드 생성 (Natural2Code): 92.9%를 달성하여 Python, Java, C++, JS, Go 등 다양한 언어에서의 코드 생성 성능이 매우 뛰어나고, 이전 모델들보다 현저히 개선되어 가장 높은 점수를 기록했습니다. 
    • 수학 (MATH): 89.7%로 대수학, 기하학, 미적분 문제 해결 능력이 매우 우수하며, 다양한 난이도의 문제를 안정적으로 해결할 수 있습니다. 
    • 오디오 번역 (CoVoST2): 오디오 데이터를 텍스트로 변환하는 BLEU 점수는 39.2%로 낮은 편으로, 다국어 음성 처리와 번역 성능 향상이 필요합니다. 
    • 추론 (GPQA): 생물학, 물리학, 화학 등 과학적 문제에서의 추론 능력이 향상되었지만, 여전히 도전적인 데이터셋에 대한 성능은 개선의 여지가 있습니다. 

    Gemini 2.0 사용 방법

    Gemini 2.0 Flash Experimental 모델을 사용할 수 있는 방법은 다음과 같습니다. 

    • 구글 AI 스튜디오: 가장 쉽게 체험해볼 수 있는 방법은 구글 AI 스튜디오 입니다. 사이트 접속 후, 왼쪽 메뉴에서 Stream Realtime를 클릭하고 "Talk to Gemini", "Show Gemini", "Share your Screen"을 클릭하여 사용하면 됩니다. "Share your Screen"을 제외하고 모바일에서도 구동이 가능합니다. 

    구글 AI 스튜디오 Stream Realtime 메인 화면
    Talk to Gemini 테스트 화면
    Share your Screen 테스트 화면

    구글 AI 스튜디오는 아래와 같이 스마트폰에서도 접속하실 수 있으며, Gemini는 실시간 비디오 이해와 대화가 가능합니다.

    스마트폰에서 접속한 구글 AI 스튜디오의 Show Gemini 구동 동영상

     

    Live API로 멀티모달 라이브 챗봇 만들기

    다음은 구글의 최신 Live API를 활용해서 중간 인터럽트가 가능한 듣고 보고 말하는 멀티모달 챗봇을 만들어 보겠습니다. 이 블로그의 작업 환경은 Windows 11 Pro, 파이썬 버전 3.11, Windsurf 1.10니다.

    1. 먼저 아래 사이트에 접속해서 GEMINI_API_KEY를 발급합니다. 

    https://aistudio.google.com/apikey

    GEMINI_API_KEY 만들기

    2. 다음은 Windsurf를 실행하고, 작업 디렉토리와 가상환경을 만든 후, .env 파일에 GEMINI_API_KEY를 설정합니다. 

    GEMINI_API_KEY=본인이 발급받은 API KEY

     

    3. 의존성 설치: 다음 명령어를 복사해서 가상환경이 활성화된 Windsurf 터미널에 붙여넣습니다. 

    pip install google-generativeai opencv-python pillow python-dotenv pyaudio

     

    4. 아래 코드를 복사해서 app.py로 저장하고, "python app.py" 명령어로 실행합니다. 이 코드는 Google의 Gemini 2.0 API를 활용해 AI 기반 오디오, 텍스트, 비디오 인터페이스를 구현하는 Python 애플리케이션입니다. 주요 기능은 음성 인식 및 출력, 실시간 텍스트 통신, 그리고 웹캠 영상을 처리하여 AI 모델로 전송하는 것입니다.

    # -*- coding: utf-8 -*-
    # Copyright 2023 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    import asyncio
    import base64
    import io
    import os
    import sys
    import traceback
    
    import cv2
    import pyaudio
    import PIL.Image
    from dotenv import load_dotenv
    
    from google import genai  # genai 모듈에서 Client 가져오기
    
    # .env 파일에서 환경 변수 로드
    load_dotenv()
    
    # 환경 변수에서 API 키 가져오기
    GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
    
    if sys.version_info < (3, 11, 0):
        import taskgroup, exceptiongroup
        asyncio.TaskGroup = taskgroup.TaskGroup
        asyncio.ExceptionGroup = exceptiongroup.ExceptionGroup
    
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    SEND_SAMPLE_RATE = 16000
    RECEIVE_SAMPLE_RATE = 24000
    CHUNK_SIZE = 512
    
    MODEL = "models/gemini-2.0-flash-exp"
    
    client = genai.Client(
        http_options={'api_version': 'v1alpha'},
        api_key="AIzaSyBB4dkkIcyqYNF5-bmlkXSIeIMvSe0uwBE"  # API 버전 설정
    )
    
    CONFIG={
        "generation_config": {"response_modalities": ["AUDIO"]}}
    
    pya = pyaudio.PyAudio()
    
    
    class AudioLoop:
        def __init__(self):
            self.audio_in_queue = asyncio.Queue()
            self.audio_out_queue = asyncio.Queue()
            self.video_out_queue = asyncio.Queue()
    
            self.session = None
    
            self.send_text_task = None
            self.receive_audio_task = None
            self.play_audio_task = None
    
        async def send_text(self):
            while True:
                text = await asyncio.to_thread(input, "message > ")
                if text.lower() == "q":
                    break
                if self.session:  # session이 None이 아닐 때만 send 호출
                    await self.session.send(text or ".", end_of_turn=True)
    
        def _get_frame(self, cap):
            # Read the frameq
            ret, frame = cap.read()
            # Check if the frame was read successfully
            if not ret:
                return None
    
            img = PIL.Image.fromarray(frame)
            img.thumbnail((1024.0, 1024.0))  # tuple로 변환
    
            image_io = io.BytesIO()
            img.save(image_io, format="jpeg")
            image_io.seek(0)
    
            mime_type = "image/jpeg"
            image_bytes = image_io.read()
            return {"mime_type": mime_type, "data": base64.b64encode(image_bytes).decode()}
    
        async def get_frames(self):
            # This takes about a second, and will block the whole program
            # causing the audio pipeline to overflow if you don't to_thread it.
            cap = await asyncio.to_thread(cv2.VideoCapture, 0)  # 0 represents the default camera
    
            while True:
                frame = await asyncio.to_thread(self._get_frame, cap)
                if frame is None:
                    break
    
                await asyncio.sleep(1.0)
    
                self.video_out_queue.put_nowait(frame)
    
            # Release the VideoCapture object
            cap.release()
    
        async def send_frames(self):
            while True:
                frame = await self.video_out_queue.get()
                if self.session:  # session이 None이 아닐 때만 send 호출
                    await self.session.send(frame)
    
        async def listen_audio(self):
            pya = pyaudio.PyAudio()
    
            mic_info = pya.get_default_input_device_info()
            stream = await asyncio.to_thread(
                pya.open,
                format=FORMAT,
                channels=CHANNELS,
                rate=SEND_SAMPLE_RATE,
                input=True,
                input_device_index=int(mic_info["index"]),  # int로 변환
                frames_per_buffer=CHUNK_SIZE,
            )
            while True:
                data = await asyncio.to_thread(stream.read, CHUNK_SIZE)
                self.audio_out_queue.put_nowait(data)
    
        async def send_audio(self):
            while True:
                chunk = await self.audio_out_queue.get()
                if self.session:  # session이 None이 아닐 때만 send 호출
                    await self.session.send({"data": chunk, "mime_type": "audio/pcm"})
    
        async def receive_audio(self):
            "Background task to reads from the websocket and write pcm chunks to the output queue"
            while True:
                if self.session:  # session이 None이 아닐 때만 receive 호출
                    async for response in self.session.receive():
                        server_content = response.server_content
                        if server_content is not None:
                            model_turn = server_content.model_turn
                            if model_turn is not None:
                                parts = model_turn.parts
    
                                for part in parts:
                                    if part.text is not None:
                                        print(part.text, end="")
                                    elif part.inline_data is not None:
                                        self.audio_in_queue.put_nowait(part.inline_data.data)
    
                            server_content.model_turn = None
                            turn_complete = server_content.turn_complete
                            if turn_complete:
                                # If you interrupt the model, it sends a turn_complete.
                                # For interruptions to work, we need to stop playback.
                                # So empty out the audio queue because it may have loaded
                                # much more audio than has played yet.
                                print("Turn complete")
                                while not self.audio_in_queue.empty():
                                    self.audio_in_queue.get_nowait()
    
        async def play_audio(self):
            pya = pyaudio.PyAudio()
            stream = await asyncio.to_thread(
                pya.open, format=FORMAT, channels=CHANNELS, rate=RECEIVE_SAMPLE_RATE, output=True
            )
            while True:
                bytestream = await self.audio_in_queue.get()
                await asyncio.to_thread(stream.write, bytestream)
    
        async def run(self):
            """Takes audio chunks off the input queue, and writes them to files.
    
            Splits and displays files if the queue pauses for more than `max_pause`.
            """
            async with (
                client.aio.live.connect(model=MODEL, config=CONFIG) as session,
                asyncio.TaskGroup() as tg,
            ):
                self.session = session
    
                send_text_task = tg.create_task(self.send_text())
    
                def cleanup(task):
                    for t in tg._tasks:
                        t.cancel()
    
                send_text_task.add_done_callback(cleanup)
    
                tg.create_task(self.listen_audio())
                tg.create_task(self.send_audio())
                tg.create_task(self.get_frames())
                tg.create_task(self.send_frames())
                tg.create_task(self.receive_audio())
                tg.create_task(self.play_audio())
    
                def check_error(task):
                    if task.cancelled():
                        return
    
                    if task.exception() is None:
                        return
    
                    e = task.exception()
                    traceback.print_exception(None, e, e.__traceback__)
                    sys.exit(1)
    
                for task in tg._tasks:
                    task.add_done_callback(check_error)
    
    
    if __name__ == "__main__":
        main = AudioLoop()
        asyncio.run(main.run())

    5. 코드를 실행하고 오디오 및 비디오 장치 접근 요청을 허용한 후, 텍스트를 입력하거나, 마이크를 통해 말을 하면 Gemini 2.0 Flash Experimental 모델이 사용자 음성이나, 실시간 비디오 영상을 입력받아, 오디오로 답변합니다. 참고로 PC의 마이크를 사용하면 스피커로 나온 모델의 답변이 다시 마이크로 입력되므로 이어폰을 사용하는것이 좋습니다. 

    "What do you see now?(지금 뭐가 보여?)" 질문 에 대한 Gemini 2.0 Flash Experimental 모델 답변
    Gemini 답변: Okay, I see a person sitting in a chair. The person has dark hair and is wearing a dark shirt. There is a white wall behind the person, and there is a curtain to the left.(좋아요, 의자에 앉아 있는 사람이 보입니다. 그 사람은 어두운 머리카락을 가지고 있고, 어두운 셔츠를 입고 있습니다. 그 사람의 뒤에는 흰색 벽이 있고, 왼쪽에는 커튼이 있습니다.)

    구글 Live API를 활용한 위 코드는 실시간 대화 중에도 사용자 입력에 즉각 반응할 수 있는 인터럽트 가능한(interruptible) 대화 메커니즘을 구현합니다. 사용자가 텍스트나 음성을 통해 모델에 새로운 입력을 제공하면, 현재 생성 중이던 응답을 중단(turn complete)하고, 새로운 요청을 우선 처리합니다.

    https://github.com/google-gemini/cookbook/blob/main/gemini-2/live_api_starter.ipynb

     

    cookbook/gemini-2/live_api_starter.ipynb at main · google-gemini/cookbook

    Examples and guides for using the Gemini API. Contribute to google-gemini/cookbook development by creating an account on GitHub.

    github.com

     

    Gemini 2.0-flash-exp 성능 테스트

    다음은 Gemini 2.0-flash-exp로 코딩, 수학, 추론 성능을 테스트해 보겠습니다. 코딩 성능은 코딩 교육 사이트 edabit.com의 Python, JavaScript, C++ 문제를 통해 테스트하고, 수학 문제는 기하학, 확률, 수열, 최적화, 복합 문제 등으로 구성된 6개의 문제를 사용했습니다. 모든 평가 항목은 재시도 없이 첫 번째 시도의 채점 결과를 그대로 반영하였습니다.

     

    1. 코딩성능 테스트: Python, JavaScript, C++ 언어별 Medium, Hard, Very Hard, Expert 난이도 문제로 테스트하였습니다.

    Gemini 2.0 Flash Experimental 모델 코딩 성능 테스트
    Python Expert 난이도: 성공
    JavaScript Expert 난이도: 성공
    C++ Expert 난이도: 실패

    Gemini 2.0
    -flash-exp
    Medium Hard Very Hard Expert
    Python Pass Pass Pass Pass
    JavaScript Pass Pass Pass Pass
    C++ Pass Pass Pass Fail

    코딩 테스트 결과, Gemini 2.0-flash-exp는 Python, JavaScript, C++ 중에서 C++의 Expert 난이도를 제외한 모든 문제를 맞히면서, 우수한 코딩 성능을 보여주었습니다. 

     

    2. 수학 성능 테스트: 기초 대수, 기하학, 확률, 수열, 최적화, 복합 문제 총 6문제로 테스트하였습니다. 

    Gemini 2.0 Flash Experimental 모델 수학 성능 테스트

    No. 문제 구분 문제 Gemini 2.0
    -flash-exp
    1 기초 대수 문제 두 숫자 𝑥 x와 𝑦 y가 있습니다. 이들이 만족하는 식은 3 𝑥 + 4 𝑦 = 12 3x+4y=12이며, 𝑥 − 2 𝑦 = 1 x−2y=1입니다. 𝑥 x와 𝑦 y의 값을 구하세요 Pass
    2 기하학 문제 반지름이 7cm인 원의 넓이를 구하세요. 𝜋 = 3.14159 π=3.14159로 계산하세요. Pass
    3 확률 문제 주사위를 두 번 던졌을 때, 두 숫자의 합이 7이 될 확률을 구하세요. Pass
    4 수열 문제 첫 번째 항이 3이고, 공차가 5인 등차수열의 10번째 항을 구하세요. Pass
    5 최적화 문제 어떤 직사각형의 둘레가 36cm입니다. 이 직사각형의 넓이를 최대화하려면 가로와 세로의 길이는 각각 얼마여야 하나요? Pass
    6 복합 문제 복소평면에서 다음 극한값을 구하시오. lim[n→∞] (1 + i/n)^(n^2) 여기서 i는 허수단위 (i^2 = -1)입니다. Pass

    수학 성능 테스트 결과, Gemini 2.0-flash-exp는 모든 문제를 맞혔습니다. 

     

    3. 추론 성능 테스트

    Gemini 2.0 Flash Experimental 모델 추론 성능 테스트

    No. 문제 Gemini 2.0
    -flash-exp
    1 5학년과 6학년 학생 160명이 나무 심기에 참가하였습니다.
    6학년 학생들이 각각 평균5그루,5학년 학생들이 각각 평균 3그루씩 심은 결과 모두 560그루를 심었습니다. 나무심기에 참가한 5,6학년 학생은 각각 몇명일까요?
    Pass
    2 베티는 새 지갑을 위해 돈을 모으고 있습니다. 새 지갑의 가격은 $100입니다. 베티는 필요한 돈의 절반만 가지고 있습니다. 그녀의 부모는 그 목적을 위해 $15를 주기로 결정했고, 할아버지와 할머니는 그녀의 부모들의 두 배를 줍니다. 베티가 지갑을 사기 위해 더 얼마나 많은 돈이 필요한가요? Pass
    3 전국 초등학생 수학경시대회가 열렸는데 영희,철수,진호 세사람이 참가했습니다. 그들은 서울,부산,인천에서 온 학생이고 각각 1등,2등,3등 상을 받았습니다. 다음과 같은 사항을 알고 있을때 진호는 어디에서 온 학생이고 몇등을 했습니까? 1) 영희는 서울의 선수가 아닙니다. 2) 철수는 부산의 선수가 아닙니다. 3)서울의 선수는 1등이 아닙니다. 4) 부산의 선수는 2등을 했습니다. 5)철수는 3등이 아닙니다. Pass
    4 방 안에는 살인자가 세 명 있습니다. 어떤 사람이 방에 들어와 그중 한 명을 죽입니다. 아무도 방을 나가지 않습니다. 방에 남아 있는 살인자는 몇 명입니까? 단계별로 추론 과정을 설명하세요. Pass
    5 A marble is put in a glass. The glass is then turned upside down and put on a table. Then the glass is picked up and put in a microwave. Where's the marble? Explain your reasoning step by step. Pass
    6 도로에 5대의 큰 버스가 차례로 세워져 있는데 각 차의 뒤에 모두 차의 목적지가 적혀져 있습니다. 기사들은 이 5대 차 중 2대는 A시로 가고, 나머지 3대는 B시로 간다는 사실을 알고 있지만 앞의 차의 목적지만 볼 수 있습니다. 안내원은 이 몇 분의 기사들이 모두 총명할 것으로 생각하고 그들의 차가 어느 도시로 가야 하는지 목적지를 알려 주지 않고 그들에게 맞혀 보라고 하였습니다. 먼저 세번째 기사에게 자신의 목적지를 맞혀 보라고 하였더니 그는 앞의 두 차에 붙여 놓은 표시를 보고 말하기를 "모르겠습니다." 라고 말하였습니다. 이것을 들은 두번째 기사도 곰곰히 생각해 보더니 "모르겠습니다." 라고 말하였습니다. 두명의 기사의 이야기를 들은 첫번째 기사는 곰곰히 생각하더니 자신의 목적지를 정확하게 말하였습니다. 첫번째 기사가 말한 목적지는 어디입니까? Fail

    추론 테스트 결과, Gemini 2.0-flash-exp6문제 중 5문제맞추었으며, 복잡한 추론 문제에 대해서는 좀 더 개선이 필요한것으로 보입니다. 

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    맺음말

    Gemini 2.0은 AI 분야의 새로운 장을 여는 혁신적인 모델로, 강력한 멀티모달 기능과 향상된 성능을 기반으로 더욱 지능적이고 효율적인 AI 에이전트 개발을 가능하게 합니다. 또한 Astra, Mariner, Jules와 같은 다양한 AI 에이전트 프로젝트를 통해 사용자 경험을 혁신적으로 변화시킬 잠재력을 가지고 있습니다.

     

    Gemini 2.0 Flash Experimental 모델을 테스트해본 후기는 다음과 같습니다. 

    • 구글 Live API로 대화도중 인터럽트가 가능한 챗봇을 누구나 만들수 있다.
    • 코딩, 추론 성능이 오픈 모델보다 우수하지는 않다.
    • 구글 AI 스튜디오의 Show Gemini는 신세계를 열어준다.

    여러분도 구글 AI 스튜디오의 Show Gemini를 통해 멀티모달 실시간 AI경험해보시길 추천해드리면서, 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다. 

     

    https://fornewchallenge.tistory.com/

     

     

    2024.08.03 - [AI 언어 모델] - ✨Gemini 1.5 프로 실험 버전: GPT-4o를 제치고 챗봇 아레나 1위!

     

    ✨Gemini 1.5 프로 실험 버전: GPT-4o를 제치고 챗봇 아레나 1위!

    안녕하세요! 오늘은 2024년 8월 1일, 구글이 공개한 최신 AI 모델, Gemini 1.5 프로 실험 버전(0801)에 대해서 알아보겠습니다. 이 모델은 사용자가 각 챗봇의 응답을 익명으로 평가하는 LMSYS 챗봇 아레

    fornewchallenge.tistory.com

     

    728x90