ReAct 란 추론(Reasoning) 과 행동(Acting)을 언어 모델에 결합하여 복잡한 문제를 해결하기 위한 방법이다
Thought(사고) > Action(행동) > Observation(관찰)
Tool Calling Agent
사고 - Tool을 호출해야 하는지 판단
행동 - 판단에 따른 행동
관찰 - 행동 결과를 전달
웹검색 툴콜링 예시 >
질문 : xx가 뭐야?
사고 ; 질문에 대한 웹 검색 필요 여부 판단
행동 : 사고에서 필요하다 생각하면 검색툴을 실행
툴 : 질문에서 검색 키워드를 추출하여 검색 진행 > 툴 결과 반환
!pip install requests==2.32.4
Collecting requests==2.32.4
Downloading requests-2.32.4-py3-none-any.whl.metadata (4.9 kB)
Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.12/dist-packages (from requests==2.32.4) (3.4.3)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.12/dist-packages (from requests==2.32.4) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.12/dist-packages (from requests==2.32.4) (2.5.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.12/dist-packages (from requests==2.32.4) (2025.8.3)
Downloading requests-2.32.4-py3-none-any.whl (64 kB)
[?25l [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m0.0/64.8 kB[0m [31m?[0m eta [36m-:--:--[0m
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m64.8/64.8 kB[0m [31m5.0 MB/s[0m eta [36m0:00:00[0m
[?25hInstalling collected packages: requests
Attempting uninstall: requests
Found existing installation: requests 2.32.5
Uninstalling requests-2.32.5:
Successfully uninstalled requests-2.32.5
[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
langchain-community 0.3.29 requires requests<3,>=2.32.5, but you have requests 2.32.4 which is incompatible.[0m[31m
[0mSuccessfully installed requests-2.32.4
!pip install -qU tavily-python langchain_community langchain_anthropic langgraph langchain_openai
import os
os.environ["TAVILY_API_KEY"] = "tvly-여러분의키르넣으세요"
from tavily import TavilyClient
# tavily 클라이언트 생성
tavily_client = TavilyClient()
search
response = tavily_client.search("파루씨앤씨가 뭐지?", max_results=3) # , topic="news", days = 10
print(response)
{'query': '파루씨앤씨가 뭐지?', 'follow_up_questions': None, 'answer': None, 'images': [], 'results': [{'url': 'https://moneypin.biz/bizno/detail/1058763432/', 'title': '주식회사 파루씨앤씨 - 사업자등록번호 조회', 'content': '주식회사 파루씨앤씨 - 사업자등록번호 조회 | 머니핀 주식회사 파루씨앤씨는 서비스 기반 소프트웨어개발 및 판매업 기업입니다. 업력 14년 차의 부가가치세 일반과세자 영리법인의 본점으로 현재 계속사업자 입니다. 본사는 서울특별시 구로구 디지털로 285, 807호(구로동, 에이스트윈타워1차)에 있습니다. Image 3 Image 4 Image 5 Image 6 Image 7 Image 8 Image 9 Image 10 Image 11 Image 12 Image 13 Image 14 Image 15 Image 23: NAVER Image 24: Profile Image폼폼 스튜디오 폼폼 스튜디오는 정보통신업 기반 애니메이션 영화 및 비디오물 제작업 기업입니다.피스트엑스 구로디지털단지 피스트엑스 구로디지털단지는 정보통신업 기반 데이터베이스 및 온라인 정보 제공업 기업입니다.주식회사 더더코퍼레이션 주식회사 더더코퍼레이션은 정보통신업 기반 응용 소프트웨어 개발 및 공급업 기업입니다.스타라인솔루션 스타라인솔루션은 정보통신업 기반 응용 소프트웨어 개발 및 공급업 기업입니다.(주)제이디씨스템 (주)제이디씨스템은 정보통신업 기반 응용 소프트웨어 개발 및 공급업 기업입니다. 최근 조회 사업자', 'score': 0.71496695, 'raw_content': None}, {'url': 'http://www.parucnc.com/info', 'title': '파루씨앤씨 로고', 'content': 'PARUCNC 성공적 Biz.를 위한 최고의 파트너 Image 1: 파루씨앤씨 로고Image 2: 파루씨앤씨 모바일 로고 * 사업영역 * 솔루션) * 모바일 * 사업영역 * 모바일 * 사업영역 ###### 성공적 Biz.를 위한 최고의 파트너 회사명(주) 파루씨앤씨 대표이사 강승남 직원수 53명 사업영역 솔루션, SI/SM, 비상주, 고객 환경에 최적화된 정보시스템을 기획하고 구축하여, 체계적이고 안정적인 정보시스템을 운영하며, 기업과 기업 그리고 기업과 개인의 효율적인 커뮤니케이션을 위한 솔루션을 제공하고 있습니다. (주)파루씨앤씨는 다양한 산업의 정보시스템 구축 경험과 지식을 바탕으로 정보시스템 분야의 성공적 Biz.를 위한 최고의 파트너입니다. Image 23 서울 구로구 디지털로 285 Image 24: Kakao 맵으로 이동(새창열림) 남구로역 1번 출구에서 도보 13분거리 구로디지털단지역 3번 출구 도보 14분 거리 Image 26 (08381)서울시 구로구 디지털로 285, 807호 (에이스트윈타워1차)TEL.02-6341-8600FAX.02-6341-8609 Copyright © parucnc.Co.,Ltd. All rights reserved. 정보를 다시 확인해주세요 잠시 후에 다시 시도해주세요 ', 'score': 0.5533369, 'raw_content': None}, {'url': 'http://www.parucnc.com/', 'title': '파루씨앤씨 로고', 'content': 'PARUCNC Image 1: 파루씨앤씨 로고Image 2: 파루씨앤씨 모바일 로고 * 회사소개 Image 5 * 솔루션 Image 6 * ITO Image 7 * 고객지원 Image 8 Image 9: main img1 Image 10: main img2 시스템 활용도 제고 및 개발 편의성 제공하는 Image 11: main img3 업무와 협력사 포탈 및 내, 외부 기관 및 시스템 연계를 지원하는 다양한 산업의 정보시스템 구축 경험과 지식을 바탕으로 정보시스템 분야의 성공적 Biz.를 위한 최고의 파트너입니다. Image 13: IOT_banner1 img 전자구매솔루션 BrilliantEP는 웹기반의 솔루션으로 POR생성-견적-입찰-계약-입고까지의 업무와 협력사 포탈 및 내, 외부 기관 및 시스템 연계를 지원합니다. Brilliant 프레임워크 Spring 기반의 Brilliant Framework는 사용자 편의성을 극대화한 업무 환경을 제공하여 업무 효율성을 증진시키고, 개발 템플릿, 모듈 관리, 인터페이스, 보안 관리 등을 지원하여 시스템 활용도 제고 및 개발 편의성을 제공합니다. Image 15', 'score': 0.54956865, 'raw_content': None}], 'response_time': 0.79, 'request_id': '16aa3d94-5d22-45f0-82a8-d75277759a3a'}
response['results']
[{'url': 'https://moneypin.biz/bizno/detail/1058763432/',
'title': '주식회사 파루씨앤씨 - 사업자등록번호 조회',
'content': '주식회사 파루씨앤씨 - 사업자등록번호 조회 | 머니핀 주식회사 파루씨앤씨는 서비스 기반 소프트웨어개발 및 판매업 기업입니다. 업력 14년 차의 부가가치세 일반과세자 영리법인의 본점으로 현재 계속사업자 입니다. 본사는 서울특별시 구로구 디지털로 285, 807호(구로동, 에이스트윈타워1차)에 있습니다. Image 3 Image 4 Image 5 Image 6 Image 7 Image 8 Image 9 Image 10 Image 11 Image 12 Image 13 Image 14 Image 15 Image 23: NAVER Image 24: Profile Image폼폼 스튜디오 폼폼 스튜디오는 정보통신업 기반 애니메이션 영화 및 비디오물 제작업 기업입니다.피스트엑스 구로디지털단지 피스트엑스 구로디지털단지는 정보통신업 기반 데이터베이스 및 온라인 정보 제공업 기업입니다.주식회사 더더코퍼레이션 주식회사 더더코퍼레이션은 정보통신업 기반 응용 소프트웨어 개발 및 공급업 기업입니다.스타라인솔루션 스타라인솔루션은 정보통신업 기반 응용 소프트웨어 개발 및 공급업 기업입니다.(주)제이디씨스템 (주)제이디씨스템은 정보통신업 기반 응용 소프트웨어 개발 및 공급업 기업입니다. 최근 조회 사업자',
'score': 0.71496695,
'raw_content': None},
{'url': 'http://www.parucnc.com/info',
'title': '파루씨앤씨 로고',
'content': 'PARUCNC 성공적 Biz.를 위한 최고의 파트너 Image 1: 파루씨앤씨 로고Image 2: 파루씨앤씨 모바일 로고 * 사업영역 * 솔루션) * 모바일 * 사업영역 * 모바일 * 사업영역 ###### 성공적 Biz.를 위한 최고의 파트너 회사명(주) 파루씨앤씨 대표이사 강승남 직원수 53명 사업영역 솔루션, SI/SM, 비상주, 고객 환경에 최적화된 정보시스템을 기획하고 구축하여, 체계적이고 안정적인 정보시스템을 운영하며, 기업과 기업 그리고 기업과 개인의 효율적인 커뮤니케이션을 위한 솔루션을 제공하고 있습니다. (주)파루씨앤씨는 다양한 산업의 정보시스템 구축 경험과 지식을 바탕으로 정보시스템 분야의 성공적 Biz.를 위한 최고의 파트너입니다. Image 23 서울 구로구 디지털로 285 Image 24: Kakao 맵으로 이동(새창열림) 남구로역 1번 출구에서 도보 13분거리 구로디지털단지역 3번 출구 도보 14분 거리 Image 26 (08381)서울시 구로구 디지털로 285, 807호 (에이스트윈타워1차)TEL.02-6341-8600FAX.02-6341-8609 Copyright © parucnc.Co.,Ltd. All rights reserved. 정보를 다시 확인해주세요 잠시 후에 다시 시도해주세요 ',
'score': 0.5533369,
'raw_content': None},
{'url': 'http://www.parucnc.com/',
'title': '파루씨앤씨 로고',
'content': 'PARUCNC Image 1: 파루씨앤씨 로고Image 2: 파루씨앤씨 모바일 로고 * 회사소개 Image 5 * 솔루션 Image 6 * ITO Image 7 * 고객지원 Image 8 Image 9: main img1 Image 10: main img2 시스템 활용도 제고 및 개발 편의성 제공하는 Image 11: main img3 업무와 협력사 포탈 및 내, 외부 기관 및 시스템 연계를 지원하는 다양한 산업의 정보시스템 구축 경험과 지식을 바탕으로 정보시스템 분야의 성공적 Biz.를 위한 최고의 파트너입니다. Image 13: IOT_banner1 img 전자구매솔루션 BrilliantEP는 웹기반의 솔루션으로 POR생성-견적-입찰-계약-입고까지의 업무와 협력사 포탈 및 내, 외부 기관 및 시스템 연계를 지원합니다. Brilliant 프레임워크 Spring 기반의 Brilliant Framework는 사용자 편의성을 극대화한 업무 환경을 제공하여 업무 효율성을 증진시키고, 개발 템플릿, 모듈 관리, 인터페이스, 보안 관리 등을 지원하여 시스템 활용도 제고 및 개발 편의성을 제공합니다. Image 15',
'score': 0.54956865,
'raw_content': None}]
get_search_context
context = tavily_client.get_search_context(query="파루씨앤씨가 뭐지?")
print(context)
[{"url": "https://moneypin.biz/bizno/detail/1058763432/", "content": "\uc8fc\uc2dd\ud68c\uc0ac \ud30c\ub8e8\uc528\uc564\uc528 - \uc0ac\uc5c5\uc790\ub4f1\ub85d\ubc88\ud638 \uc870\ud68c | \uba38\ub2c8\ud540 \uc8fc\uc2dd\ud68c\uc0ac \ud30c\ub8e8\uc528\uc564\uc528\ub294 \uc11c\ube44\uc2a4 \uae30\ubc18 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uac1c\ubc1c \ubc0f \ud310\ub9e4\uc5c5 \uae30\uc5c5\uc785\ub2c8\ub2e4. \uc5c5\ub825 14\ub144 \ucc28\uc758 \ubd80\uac00\uac00\uce58\uc138 \uc77c\ubc18\uacfc\uc138\uc790 \uc601\ub9ac\ubc95\uc778\uc758 \ubcf8\uc810\uc73c\ub85c \ud604\uc7ac \uacc4\uc18d\uc0ac\uc5c5\uc790 \uc785\ub2c8\ub2e4. \ubcf8\uc0ac\ub294 \uc11c\uc6b8\ud2b9\ubcc4\uc2dc \uad6c\ub85c\uad6c \ub514\uc9c0\ud138\ub85c 285, 807\ud638(\uad6c\ub85c\ub3d9, \uc5d0\uc774\uc2a4\ud2b8\uc708\ud0c0\uc6cc1\ucc28)\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. Image 3 Image 4 Image 5 Image 6 Image 7 Image 8 Image 9 Image 10 Image 11 Image 12 Image 13 Image 14 Image 15 Image 23: NAVER Image 24: Profile Image\ud3fc\ud3fc \uc2a4\ud29c\ub514\uc624 \ud3fc\ud3fc \uc2a4\ud29c\ub514\uc624\ub294 \uc815\ubcf4\ud1b5\uc2e0\uc5c5 \uae30\ubc18 \uc560\ub2c8\uba54\uc774\uc158 \uc601\ud654 \ubc0f \ube44\ub514\uc624\ubb3c \uc81c\uc791\uc5c5 \uae30\uc5c5\uc785\ub2c8\ub2e4.\ud53c\uc2a4\ud2b8\uc5d1\uc2a4 \uad6c\ub85c\ub514\uc9c0\ud138\ub2e8\uc9c0 \ud53c\uc2a4\ud2b8\uc5d1\uc2a4 \uad6c\ub85c\ub514\uc9c0\ud138\ub2e8\uc9c0\ub294 \uc815\ubcf4\ud1b5\uc2e0\uc5c5 \uae30\ubc18 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubc0f \uc628\ub77c\uc778 \uc815\ubcf4 \uc81c\uacf5\uc5c5 \uae30\uc5c5\uc785\ub2c8\ub2e4.\uc8fc\uc2dd\ud68c\uc0ac \ub354\ub354\ucf54\ud37c\ub808\uc774\uc158 \uc8fc\uc2dd\ud68c\uc0ac \ub354\ub354\ucf54\ud37c\ub808\uc774\uc158\uc740 \uc815\ubcf4\ud1b5\uc2e0\uc5c5 \uae30\ubc18 \uc751\uc6a9 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c \ubc0f \uacf5\uae09\uc5c5 \uae30\uc5c5\uc785\ub2c8\ub2e4.\uc2a4\ud0c0\ub77c\uc778\uc194\ub8e8\uc158 \uc2a4\ud0c0\ub77c\uc778\uc194\ub8e8\uc158\uc740 \uc815\ubcf4\ud1b5\uc2e0\uc5c5 \uae30\ubc18 \uc751\uc6a9 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c \ubc0f \uacf5\uae09\uc5c5 \uae30\uc5c5\uc785\ub2c8\ub2e4.(\uc8fc)\uc81c\uc774\ub514\uc528\uc2a4\ud15c (\uc8fc)\uc81c\uc774\ub514\uc528\uc2a4\ud15c\uc740 \uc815\ubcf4\ud1b5\uc2e0\uc5c5 \uae30\ubc18 \uc751\uc6a9 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c \ubc0f \uacf5\uae09\uc5c5 \uae30\uc5c5\uc785\ub2c8\ub2e4. \ucd5c\uadfc \uc870\ud68c \uc0ac\uc5c5\uc790"}, {"url": "http://www.parucnc.com/", "content": "PARUCNC Image 1: \ud30c\ub8e8\uc528\uc564\uc528 \ub85c\uace0Image 2: \ud30c\ub8e8\uc528\uc564\uc528 \ubaa8\ubc14\uc77c \ub85c\uace0 * \ud68c\uc0ac\uc18c\uac1c Image 5 * \uc194\ub8e8\uc158 Image 6 * ITO Image 7 * \uace0\uac1d\uc9c0\uc6d0 Image 8 Image 9: main img1 Image 10: main img2 \uc2dc\uc2a4\ud15c \ud65c\uc6a9\ub3c4 \uc81c\uace0 \ubc0f \uac1c\ubc1c \ud3b8\uc758\uc131 \uc81c\uacf5\ud558\ub294 Image 11: main img3 \uc5c5\ubb34\uc640 \ud611\ub825\uc0ac \ud3ec\ud0c8 \ubc0f \ub0b4, \uc678\ubd80 \uae30\uad00 \ubc0f \uc2dc\uc2a4\ud15c \uc5f0\uacc4\ub97c \uc9c0\uc6d0\ud558\ub294 \ub2e4\uc591\ud55c \uc0b0\uc5c5\uc758 \uc815\ubcf4\uc2dc\uc2a4\ud15c \uad6c\ucd95 \uacbd\ud5d8\uacfc \uc9c0\uc2dd\uc744 \ubc14\ud0d5\uc73c\ub85c \uc815\ubcf4\uc2dc\uc2a4\ud15c \ubd84\uc57c\uc758 \uc131\uacf5\uc801 Biz.\ub97c \uc704\ud55c \ucd5c\uace0\uc758 \ud30c\ud2b8\ub108\uc785\ub2c8\ub2e4. Image 13: IOT_banner1 img \uc804\uc790\uad6c\ub9e4\uc194\ub8e8\uc158 BrilliantEP\ub294 \uc6f9\uae30\ubc18\uc758 \uc194\ub8e8\uc158\uc73c\ub85c POR\uc0dd\uc131-\uacac\uc801-\uc785\ucc30-\uacc4\uc57d-\uc785\uace0\uae4c\uc9c0\uc758 \uc5c5\ubb34\uc640 \ud611\ub825\uc0ac \ud3ec\ud0c8 \ubc0f \ub0b4, \uc678\ubd80 \uae30\uad00 \ubc0f \uc2dc\uc2a4\ud15c \uc5f0\uacc4\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. Brilliant \ud504\ub808\uc784\uc6cc\ud06c Spring \uae30\ubc18\uc758 Brilliant Framework\ub294 \uc0ac\uc6a9\uc790 \ud3b8\uc758\uc131\uc744 \uadf9\ub300\ud654\ud55c \uc5c5\ubb34 \ud658\uacbd\uc744 \uc81c\uacf5\ud558\uc5ec \uc5c5\ubb34 \ud6a8\uc728\uc131\uc744 \uc99d\uc9c4\uc2dc\ud0a4\uace0, \uac1c\ubc1c \ud15c\ud50c\ub9bf, \ubaa8\ub4c8 \uad00\ub9ac, \uc778\ud130\ud398\uc774\uc2a4, \ubcf4\uc548 \uad00\ub9ac \ub4f1\uc744 \uc9c0\uc6d0\ud558\uc5ec \uc2dc\uc2a4\ud15c \ud65c\uc6a9\ub3c4 \uc81c\uace0 \ubc0f \uac1c\ubc1c \ud3b8\uc758\uc131\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. Image 15"}, {"url": "http://www.parucnc.com/info", "content": "PARUCNC \uc131\uacf5\uc801 Biz.\ub97c \uc704\ud55c \ucd5c\uace0\uc758 \ud30c\ud2b8\ub108 Image 1: \ud30c\ub8e8\uc528\uc564\uc528 \ub85c\uace0Image 2: \ud30c\ub8e8\uc528\uc564\uc528 \ubaa8\ubc14\uc77c \ub85c\uace0 * \uc0ac\uc5c5\uc601\uc5ed * \uc194\ub8e8\uc158) * \ubaa8\ubc14\uc77c * \uc0ac\uc5c5\uc601\uc5ed * \ubaa8\ubc14\uc77c * \uc0ac\uc5c5\uc601\uc5ed ###### \uc131\uacf5\uc801 Biz.\ub97c \uc704\ud55c \ucd5c\uace0\uc758 \ud30c\ud2b8\ub108 \ud68c\uc0ac\uba85(\uc8fc) \ud30c\ub8e8\uc528\uc564\uc528 \ub300\ud45c\uc774\uc0ac \uac15\uc2b9\ub0a8 \uc9c1\uc6d0\uc218 53\uba85 \uc0ac\uc5c5\uc601\uc5ed \uc194\ub8e8\uc158, SI/SM, \ube44\uc0c1\uc8fc, \uace0\uac1d \ud658\uacbd\uc5d0 \ucd5c\uc801\ud654\ub41c \uc815\ubcf4\uc2dc\uc2a4\ud15c\uc744 \uae30\ud68d\ud558\uace0 \uad6c\ucd95\ud558\uc5ec, \uccb4\uacc4\uc801\uc774\uace0 \uc548\uc815\uc801\uc778 \uc815\ubcf4\uc2dc\uc2a4\ud15c\uc744 \uc6b4\uc601\ud558\uba70, \uae30\uc5c5\uacfc \uae30\uc5c5 \uadf8\ub9ac\uace0 \uae30\uc5c5\uacfc \uac1c\uc778\uc758 \ud6a8\uc728\uc801\uc778 \ucee4\ubba4\ub2c8\ucf00\uc774\uc158\uc744 \uc704\ud55c \uc194\ub8e8\uc158\uc744 \uc81c\uacf5\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. (\uc8fc)\ud30c\ub8e8\uc528\uc564\uc528\ub294 \ub2e4\uc591\ud55c \uc0b0\uc5c5\uc758 \uc815\ubcf4\uc2dc\uc2a4\ud15c \uad6c\ucd95 \uacbd\ud5d8\uacfc \uc9c0\uc2dd\uc744 \ubc14\ud0d5\uc73c\ub85c \uc815\ubcf4\uc2dc\uc2a4\ud15c \ubd84\uc57c\uc758 \uc131\uacf5\uc801 Biz.\ub97c \uc704\ud55c \ucd5c\uace0\uc758 \ud30c\ud2b8\ub108\uc785\ub2c8\ub2e4. Image 23 \uc11c\uc6b8 \uad6c\ub85c\uad6c \ub514\uc9c0\ud138\ub85c 285 Image 24: Kakao \ub9f5\uc73c\ub85c \uc774\ub3d9(\uc0c8\ucc3d\uc5f4\ub9bc) \ub0a8\uad6c\ub85c\uc5ed 1\ubc88 \ucd9c\uad6c\uc5d0\uc11c \ub3c4\ubcf4 13\ubd84\uac70\ub9ac \uad6c\ub85c\ub514\uc9c0\ud138\ub2e8\uc9c0\uc5ed 3\ubc88 \ucd9c\uad6c \ub3c4\ubcf4 14\ubd84 \uac70\ub9ac Image 26 (08381)\uc11c\uc6b8\uc2dc \uad6c\ub85c\uad6c \ub514\uc9c0\ud138\ub85c 285, 807\ud638 (\uc5d0\uc774\uc2a4\ud2b8\uc708\ud0c0\uc6cc1\ucc28)TEL.02-6341-8600FAX.02-6341-8609 Copyright \u00a9 parucnc.Co.,Ltd. All rights reserved. \uc815\ubcf4\ub97c \ub2e4\uc2dc \ud655\uc778\ud574\uc8fc\uc138\uc694 \uc7a0\uc2dc \ud6c4\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694 "}]
qna_search
answer = tavily_client.qna_search(query="파루씨앤씨가 뭐지?")
print(answer)
파루씨앤씨는 정보시스템 솔루션 및 서비스를 제공하는 중소기업입니다. 2011년 설립되었으며, 서울 구로구에 위치해 있습니다. 주요 업무는 구매 및 회계 관리 솔루션입니다.
tavily search 를 tool로 쓸 수 있도록 TavilySearchResults 객체를 불러와 사용
from langchain_community.tools.tavily_search import TavilySearchResults
tool = TavilySearchResults(max_results=2)
tool.invoke("파루씨앤씨가 뭐지?")
[{'title': '파루씨앤씨 로고 - PARUCNC',
'url': 'http://www.parucnc.com/info',
'content': 'ITO Image 7\n ITO\n ITO 플랫폼\n 이슈관리\n\n 서비스\n 인재채용\n 고객지원 Image 8\n 공지사항\n 문의하기\n\n### 회사소개\n\n 파루씨앤씨 대표이사 강승남 직원수 53명 사업영역 솔루션, SI/SM, 비상주, \n\nITO, 웹디자인, 재판매\n\n고객 환경에 최적화된 정보시스템을 기획하고 구축하여, 체계적이고 안정적인 정보시스템을 운영하며, 기업과 기업 그리고 기업과 개인의 효율적인 커뮤니케이션을 위한 솔루션을 제공하고 있습니다. (주)파루씨앤씨는 다양한 산업의 정보시스템 구축 경험과 지식을 바탕으로 정보시스템 분야의 성공적 Biz.를 위한 최고의 파트너입니다.\n\n#### 찾아오시는 길\n\nImage 11Image 12Image 13Image 14Image 15Image 16Image 17Image 18Image 19Image 20Image 21Image 22\n\nImage 23',
'score': 0.61363083},
{'title': '파루씨앤씨 로고',
'url': 'http://www.parucnc.com/',
'content': '다양한 산업의 정보시스템 구축 경험과 지식을 바탕으로 정보시스템 분야의 성공적 Biz.를 위한 최고의 파트너입니다.\n\n고객 환경에 최적화된\n\n정보시스템 기획/구축 체계적이고 안정적인\n\n정보시스템 운영 통합 개발 프레임워크를\n\n 통한 시스템 효율성 증대\n\nBUSINESS LINE.\n\n많은 고객사가 원하는 다양한 디지털전환 솔루션을 파루가 제공합니다.\n\n사업영역 바로가기Image 12: business_line img\n\n#### IT OUTSOURCING\n\n전문인력 비대면 개발/운영지원을 통해 리스크 관리와 효율성 증대를 추구합니다.\n\nImage 13: IOT_banner1 img\n\nPARUCNC 전문가에게 문의하세요\n\n문의하기Image 14: inqury img\n\n#### OUR SERVICE\n\nSOLUTION)\n\n전자구매솔루션 BrilliantEP는 웹기반의 솔루션으로 POR생성-견적-입찰-계약-입고까지의 업무와 협력사 포탈 및 내, 외부 기관 및 시스템 연계를 지원합니다. [...] ITO Image 7\n ITO\n ITO 플랫폼\n 이슈관리\n\n 서비스\n 인재채용\n 고객지원 Image 8\n 공지사항\n 문의하기\n\nImage 9: main img1\n\n### 우리 시대의 새벽을 여는 파루씨앤씨\n\n회사와 개인의 발전이 함께 중시되고\n\n가정과 이웃을 위해 우리의 한 손을 내어줄 수 있는\n\n회사소개 바로가기\n\nImage 10: main img2\n\n### Brilliant 프레임워크\n\n사용자 편의성을 극대화한 업무 환경을 이용한 효율성 증진하고\n\n시스템 활용도 제고 및 개발 편의성 제공하는\n\n프레임워크 바로가기\n\nImage 11: main img3\n\n### 전자구매솔루션\n\n웹기반의 솔루션으로 POR생성-견적-입찰-계약-입고까지의 \n\n 업무와 협력사 포탈 및 내, 외부 기관 및 시스템 연계를 지원하는\n\n전자구매 바로가기\n\nPreviousNext\n\n#### PARUCNC AREA [...] PARUCNC\n\n성공적 Biz.를 위한\n\n최고의 파트너\n\nImage 1: 파루씨앤씨 로고Image 2: 파루씨앤씨 모바일 로고\n\n 회사소개)\n OVERVIEW\n 경영이념\n 회사연혁\n 사업영역\n\n 솔루션)\n 프레임워크\n 전자구매\n 모바일\n\n ITO)\n ITO\n ITO 플랫폼\n 이슈관리\n\n 서비스)\n RA\n\n 인재채용)\n 인재채용\n\n 고객지원)\n 공지사항\n 문의하기\n\nImage 3: 메뉴 버튼 닫기Image 4: 파루씨앤씨 모바일 로고\n 회사소개 Image 5\n OVERVIEW\n 경영이념\n 회사연혁\n 사업영역\n\n 솔루션 Image 6\n 프레임워크\n 전자구매\n 모바일',
'score': 0.6083387}]
# os.environ["OPENAI_API_KEY"] = ""
# # Example: Passing tool outputs to model
# from langchain_core.tools import tool
# @tool
# def add(a: int, b: int) -> int:
# """Adds a and b.
# Args:
# a: first int
# b: second int
# """
# return a + b
# @tool
# def multiply(a: int, b: int) -> int:
# """Multiplies a and b.
# Args:
# a: first int
# b: second int
# """
# return a * b
# tools = [add, multiply]
ngrok http 11434
# 필요한 패키지 설치
!pip install -U langchain langchain-ollama langchain-core
# 코드 수정
from langchain_ollama import ChatOllama
# Ollama 모델 지정 (예: llama3:8b)
llm = ChatOllama(model="qwen2.5:7b-instruct", base_url="https://671a764f5f21.ngrok-free.app")
# 기존 tools 바인딩
#llm_with_tools = llm.bind_tools(tools)
Requirement already satisfied: langchain in /usr/local/lib/python3.12/dist-packages (0.3.27)
Requirement already satisfied: langchain-ollama in /usr/local/lib/python3.12/dist-packages (0.3.8)
Requirement already satisfied: langchain-core in /usr/local/lib/python3.12/dist-packages (0.3.76)
Requirement already satisfied: langchain-text-splitters<1.0.0,>=0.3.9 in /usr/local/lib/python3.12/dist-packages (from langchain) (0.3.11)
Requirement already satisfied: langsmith>=0.1.17 in /usr/local/lib/python3.12/dist-packages (from langchain) (0.4.24)
Requirement already satisfied: pydantic<3.0.0,>=2.7.4 in /usr/local/lib/python3.12/dist-packages (from langchain) (2.11.7)
Requirement already satisfied: SQLAlchemy<3,>=1.4 in /usr/local/lib/python3.12/dist-packages (from langchain) (2.0.43)
Requirement already satisfied: requests<3,>=2 in /usr/local/lib/python3.12/dist-packages (from langchain) (2.32.5)
Requirement already satisfied: PyYAML>=5.3 in /usr/local/lib/python3.12/dist-packages (from langchain) (6.0.2)
Requirement already satisfied: ollama<1.0.0,>=0.5.3 in /usr/local/lib/python3.12/dist-packages (from langchain-ollama) (0.5.3)
Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.1.0 in /usr/local/lib/python3.12/dist-packages (from langchain-core) (8.5.0)
Requirement already satisfied: jsonpatch<2.0,>=1.33 in /usr/local/lib/python3.12/dist-packages (from langchain-core) (1.33)
Requirement already satisfied: typing-extensions>=4.7 in /usr/local/lib/python3.12/dist-packages (from langchain-core) (4.15.0)
Requirement already satisfied: packaging>=23.2 in /usr/local/lib/python3.12/dist-packages (from langchain-core) (25.0)
Requirement already satisfied: jsonpointer>=1.9 in /usr/local/lib/python3.12/dist-packages (from jsonpatch<2.0,>=1.33->langchain-core) (3.0.0)
Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.12/dist-packages (from langsmith>=0.1.17->langchain) (0.28.1)
Requirement already satisfied: orjson>=3.9.14 in /usr/local/lib/python3.12/dist-packages (from langsmith>=0.1.17->langchain) (3.11.3)
Requirement already satisfied: requests-toolbelt>=1.0.0 in /usr/local/lib/python3.12/dist-packages (from langsmith>=0.1.17->langchain) (1.0.0)
Requirement already satisfied: zstandard>=0.23.0 in /usr/local/lib/python3.12/dist-packages (from langsmith>=0.1.17->langchain) (0.24.0)
Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.12/dist-packages (from pydantic<3.0.0,>=2.7.4->langchain) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in /usr/local/lib/python3.12/dist-packages (from pydantic<3.0.0,>=2.7.4->langchain) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.12/dist-packages (from pydantic<3.0.0,>=2.7.4->langchain) (0.4.1)
Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2->langchain) (3.4.3)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2->langchain) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2->langchain) (2.5.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.12/dist-packages (from requests<3,>=2->langchain) (2025.8.3)
Requirement already satisfied: greenlet>=1 in /usr/local/lib/python3.12/dist-packages (from SQLAlchemy<3,>=1.4->langchain) (3.2.4)
Requirement already satisfied: anyio in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->langsmith>=0.1.17->langchain) (4.10.0)
Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->langsmith>=0.1.17->langchain) (1.0.9)
Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.12/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->langsmith>=0.1.17->langchain) (0.16.0)
Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.12/dist-packages (from anyio->httpx<1,>=0.23.0->langsmith>=0.1.17->langchain) (1.3.1)
# from langchain_openai import ChatOpenAI
# llm = ChatOpenAI(model="gpt-4o")
# llm_with_tools = llm.bind_tools(tools)
from langchain_core.tools import tool
@tool
def add(a: int, b: int) -> int:
"""Adds two numbers."""
return a + b
@tool
def multiply(a: int, b: int) -> int:
"""Multiplies two numbers."""
return a * b
# 툴에 대한 모듬
# 툴들을 llm에 바인드
tools = [add, multiply]
llm_with_tools = llm.bind_tools(tools)
from langchain_core.messages import HumanMessage
query = HumanMessage(content="What is 3 * 12? Also, what is 11 + 49?")
response = llm_with_tools.invoke([query])
print(response.tool_calls)
# 어떤 도구를 호출했는지 확인
[{'name': 'multiply', 'args': {'a': 3, 'b': 12}, 'id': '08c724fc-57e0-45f6-bd1d-1e2966f1ea7f', 'type': 'tool_call'}, {'name': 'add', 'args': {'a': 11, 'b': 49}, 'id': '0819ae42-1dd9-4d67-a0cc-900528f050ef', 'type': 'tool_call'}]
query = "What is 12 % 2?"
llm_with_tools.invoke(query).tool_calls
# 나누기는 도구가 없으므로 도구를 불러오지 않음
[]
from langchain_ollama import ChatOllama
from langchain.tools.tavily_search import TavilySearchResults
# Tavily 도구 설정
tool = TavilySearchResults(max_results=2)
tools = [tool]
# Ollama 모델 지정 (예: llama3:8b)
llm = ChatOllama(model="qwen2.5:7b-instruct", base_url="https://671a764f5f21.ngrok-free.app")
# 도구 바인딩
llm_with_tools = llm.bind_tools(tools)
llm_with_tools.invoke("안녕하세요?")
AIMessage(content='안녕하세요! 어떻게 도와드릴까요?', additional_kwargs={}, response_metadata={'model': 'qwen2.5:7b-instruct', 'created_at': '2025-09-14T06:04:25.293305053Z', 'done': True, 'done_reason': 'stop', 'total_duration': 17034690794, 'load_duration': 95102926, 'prompt_eval_count': 191, 'prompt_eval_duration': 14707475606, 'eval_count': 12, 'eval_duration': 2222263710, 'model_name': 'qwen2.5:7b-instruct'}, id='run--df0e57d7-5cfc-4df2-94b9-a5c1b2bd44b3-0', usage_metadata={'input_tokens': 191, 'output_tokens': 12, 'total_tokens': 203})
llm_with_tools.invoke("파루씨앤씨에 대해서 알려줘?")
AIMessage(content='paredo snc는 이탈리아의 제조업체로 알려져 있습니다. 하지만 "파루씨앤씨"라는 표현은 정확한 회사명인지 불sure합니다. 다른 정보나 명확한 회사 이름을 제공해 주시면 더 정확한 정보를 찾아 드릴 수 있을 것 같습니다.\n\n먼저 "파루씨앤씨"에 대해 검색해보겠습니다.\n', additional_kwargs={}, response_metadata={'model': 'qwen2.5:7b-instruct', 'created_at': '2025-09-14T06:05:03.285155133Z', 'done': True, 'done_reason': 'stop', 'total_duration': 25017956436, 'load_duration': 106580378, 'prompt_eval_count': 197, 'prompt_eval_duration': 1621770227, 'eval_count': 115, 'eval_duration': 23281652123, 'model_name': 'qwen2.5:7b-instruct'}, id='run--207050bf-9f38-4785-9eb1-9782ed21e7b8-0', tool_calls=[{'name': 'tavily_search_results_json', 'args': {'query': '파루씨앤씨'}, 'id': '0a6f9473-76a0-4d06-88a1-8a025ae587ac', 'type': 'tool_call'}], usage_metadata={'input_tokens': 197, 'output_tokens': 115, 'total_tokens': 312})
llm_with_tools.invoke("Langgraph에 대해서 검색해줘?")
AIMessage(content='', additional_kwargs={}, response_metadata={'model': 'qwen2.5:7b-instruct', 'created_at': '2025-09-14T06:05:42.617428093Z', 'done': True, 'done_reason': 'stop', 'total_duration': 6117896851, 'load_duration': 87536655, 'prompt_eval_count': 196, 'prompt_eval_duration': 1300310821, 'eval_count': 25, 'eval_duration': 4723319900, 'model_name': 'qwen2.5:7b-instruct'}, id='run--88dcc771-48e5-43fb-8c73-3beda3163462-0', tool_calls=[{'name': 'tavily_search_results_json', 'args': {'query': 'Langgraph'}, 'id': '8a71ae3b-41f3-4c64-868e-979f2330fafc', 'type': 'tool_call'}], usage_metadata={'input_tokens': 196, 'output_tokens': 25, 'total_tokens': 221})
llm_with_tools.invoke("What is Langgraph?").tool_calls
[]
Tool을 호출하고 그 결과를 모델(LLM)로 전달하기
chatbot 역할 노드
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
class State(TypedDict): # 그래프의 상태를 정의하는 클래스
messages: Annotated[list, add_messages] # 메시지 누적
graph_builder = StateGraph(State) # StateGraph 생성 (대화 흐름 관리)
def chatbot(state: State):
return {"messages": [llm_with_tools.invoke(state["messages"])]}
graph_builder.add_node("chatbot", chatbot) # 노드이름, 함수
<langgraph.graph.state.StateGraph at 0x79e97ed8f5f0>
tools 정의
import json
from langchain_core.messages import ToolMessage
class BasicToolNode:
"""
A node that runs the tools requested in the last AIMessage.
마지막 AIMessage에서 요청된 도구를 실행하는 노드
"""
def __init__(self, tools: list) -> None:
self.tools_by_name = {tool.name: tool for tool in tools} # ["tavily_search_results_json" : TavilySearchResults()]
def __call__(self, inputs: dict):
if messages := inputs.get("messages", []):
message = messages[-1] # 마지막 message 불러옴
else:
raise ValueError("No message found in input")
outputs = []
for tool_call in message.tool_calls: # 메시지에서 호출된 도구를 불러옴
tool_result = self.tools_by_name[tool_call["name"]].invoke( # Tool 호출 실행
tool_call["args"]
)
outputs.append( # Tool 호출 결과(ToolMessage) 추가 outputs에 저장
ToolMessage(
content=json.dumps(tool_result),
name=tool_call["name"],
tool_call_id=tool_call["id"],
)
)
return {"messages": outputs} # 메세지에 outputs 입력
tool_node = BasicToolNode(tools=[tool])
graph_builder.add_node("tools", tool_node)
<langgraph.graph.state.StateGraph at 0x79e97ed8f5f0>
조건부 엣지, 라우팅 (add_conditional_edges)
def route_tools(
state: State,
):
"""
Use in the conditional_edge to route to the ToolNode if the last message
has tool calls. Otherwise, route to the end.
"""
if isinstance(state, list):
ai_message = state[-1]
elif messages := state.get("messages", []):
ai_message = messages[-1]
else:
raise ValueError(f"No messages found in input state to tool_edge: {state}")
if hasattr(ai_message, "tool_calls") and len(ai_message.tool_calls) > 0: # if the last message has "tool_calls" >> ai메세지에 tool_calls를 포함함
return "tools"
return END
# 조건부 엣지 연결
graph_builder.add_conditional_edges(
"chatbot", # 시작 노드 정의 - 챗봇
route_tools,
{"tools": "tools", END: END}, # 반환값이 "tools" 면 "tools" 노드로, END 면 END로 이동
)
<langgraph.graph.state.StateGraph at 0x79e97ed8f5f0>
# 엣지 연결
graph_builder.add_edge("tools", "chatbot") # 도구가 호출될 때마다 챗봇으로 돌아가 다음 단계를 결정
graph_builder.add_edge(START, "chatbot")
graph = graph_builder.compile()
from IPython.display import Image, display
try:
display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
# This requires some extra dependencies and is optional
pass

# 유저 인풋을 넣고 그래프에 업데이트 해주고 업데이트가 되었다면 노드의 호출 결과를 스트림 형식으로 받아옴
# 받아와서 스트림 결과를 출력해줌 , 결국 ai의 답변을 출력해 줌
def stream_graph_updates(user_input: str):
for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}): # graph 노드 호출 결과 받아옴
for value in event.values():
print("Assistant:", value["messages"][-1].content) # AI 답변 출력
while True:
try:
user_input = input("User: ")
if user_input.lower() in ["quit", "exit", "q"]:
print("Goodbye!")
break
stream_graph_updates(user_input)
except:
# fallback if input() is not available
user_input = "LangGraph 에 대해서 알려줘"
print("User: " + user_input)
stream_graph_updates(user_input)
break
User: 파루씨앤씨가 뭐지?
Assistant: pareuccanice는 한국의 건강보조식품 회사 중 하나입니다. 정확한 정보를 얻기 위해 검색해볼게요. 잠시만 기다려주세요.
Assistant: [{"title": "\ud30c\ub8e8\uc528\uc564\uc528 \ub85c\uace0", "url": "http://www.parucnc.com/", "content": "\ub2e4\uc591\ud55c \uc0b0\uc5c5\uc758 \uc815\ubcf4\uc2dc\uc2a4\ud15c \uad6c\ucd95 \uacbd\ud5d8\uacfc \uc9c0\uc2dd\uc744 \ubc14\ud0d5\uc73c\ub85c \uc815\ubcf4\uc2dc\uc2a4\ud15c \ubd84\uc57c\uc758 \uc131\uacf5\uc801 Biz.\ub97c \uc704\ud55c \ucd5c\uace0\uc758 \ud30c\ud2b8\ub108\uc785\ub2c8\ub2e4.\n\n\uace0\uac1d \ud658\uacbd\uc5d0 \ucd5c\uc801\ud654\ub41c\n\n\uc815\ubcf4\uc2dc\uc2a4\ud15c \uae30\ud68d/\uad6c\ucd95 \uccb4\uacc4\uc801\uc774\uace0 \uc548\uc815\uc801\uc778\n\n\uc815\ubcf4\uc2dc\uc2a4\ud15c \uc6b4\uc601 \ud1b5\ud569 \uac1c\ubc1c \ud504\ub808\uc784\uc6cc\ud06c\ub97c\n\n \ud1b5\ud55c \uc2dc\uc2a4\ud15c \ud6a8\uc728\uc131 \uc99d\ub300\n\nBUSINESS LINE.\n\n\ub9ce\uc740 \uace0\uac1d\uc0ac\uac00 \uc6d0\ud558\ub294 \ub2e4\uc591\ud55c \ub514\uc9c0\ud138\uc804\ud658 \uc194\ub8e8\uc158\uc744 \ud30c\ub8e8\uac00 \uc81c\uacf5\ud569\ub2c8\ub2e4.\n\n\uc0ac\uc5c5\uc601\uc5ed \ubc14\ub85c\uac00\uae30Image 12: business_line img\n\n#### IT OUTSOURCING\n\n\uc804\ubb38\uc778\ub825 \ube44\ub300\uba74 \uac1c\ubc1c/\uc6b4\uc601\uc9c0\uc6d0\uc744 \ud1b5\ud574 \ub9ac\uc2a4\ud06c \uad00\ub9ac\uc640 \ud6a8\uc728\uc131 \uc99d\ub300\ub97c \ucd94\uad6c\ud569\ub2c8\ub2e4.\n\nImage 13: IOT_banner1 img\n\nPARUCNC \uc804\ubb38\uac00\uc5d0\uac8c \ubb38\uc758\ud558\uc138\uc694\n\n\ubb38\uc758\ud558\uae30Image 14: inqury img\n\n#### OUR SERVICE\n\nSOLUTION)\n\n\uc804\uc790\uad6c\ub9e4\uc194\ub8e8\uc158 BrilliantEP\ub294 \uc6f9\uae30\ubc18\uc758 \uc194\ub8e8\uc158\uc73c\ub85c POR\uc0dd\uc131-\uacac\uc801-\uc785\ucc30-\uacc4\uc57d-\uc785\uace0\uae4c\uc9c0\uc758 \uc5c5\ubb34\uc640 \ud611\ub825\uc0ac \ud3ec\ud0c8 \ubc0f \ub0b4, \uc678\ubd80 \uae30\uad00 \ubc0f \uc2dc\uc2a4\ud15c \uc5f0\uacc4\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. [...] PARUCNC\n\n\uc131\uacf5\uc801 Biz.\ub97c \uc704\ud55c\n\n\ucd5c\uace0\uc758 \ud30c\ud2b8\ub108\n\nImage 1: \ud30c\ub8e8\uc528\uc564\uc528 \ub85c\uace0Image 2: \ud30c\ub8e8\uc528\uc564\uc528 \ubaa8\ubc14\uc77c \ub85c\uace0\n\n \ud68c\uc0ac\uc18c\uac1c)\n OVERVIEW\n \uacbd\uc601\uc774\ub150\n \ud68c\uc0ac\uc5f0\ud601\n \uc0ac\uc5c5\uc601\uc5ed\n\n \uc194\ub8e8\uc158)\n \ud504\ub808\uc784\uc6cc\ud06c\n \uc804\uc790\uad6c\ub9e4\n \ubaa8\ubc14\uc77c\n\n ITO)\n ITO\n ITO \ud50c\ub7ab\ud3fc\n \uc774\uc288\uad00\ub9ac\n\n \uc11c\ube44\uc2a4)\n RA\n\n \uc778\uc7ac\ucc44\uc6a9)\n \uc778\uc7ac\ucc44\uc6a9\n\n \uace0\uac1d\uc9c0\uc6d0)\n \uacf5\uc9c0\uc0ac\ud56d\n \ubb38\uc758\ud558\uae30\n\nImage 3: \uba54\ub274 \ubc84\ud2bc \ub2eb\uae30Image 4: \ud30c\ub8e8\uc528\uc564\uc528 \ubaa8\ubc14\uc77c \ub85c\uace0\n \ud68c\uc0ac\uc18c\uac1c Image 5\n OVERVIEW\n \uacbd\uc601\uc774\ub150\n \ud68c\uc0ac\uc5f0\ud601\n \uc0ac\uc5c5\uc601\uc5ed\n\n \uc194\ub8e8\uc158 Image 6\n \ud504\ub808\uc784\uc6cc\ud06c\n \uc804\uc790\uad6c\ub9e4\n \ubaa8\ubc14\uc77c [...] ITO Image 7\n ITO\n ITO \ud50c\ub7ab\ud3fc\n \uc774\uc288\uad00\ub9ac\n\n \uc11c\ube44\uc2a4\n \uc778\uc7ac\ucc44\uc6a9\n \uace0\uac1d\uc9c0\uc6d0 Image 8\n \uacf5\uc9c0\uc0ac\ud56d\n \ubb38\uc758\ud558\uae30\n\nImage 9: main img1\n\n### \uc6b0\ub9ac \uc2dc\ub300\uc758 \uc0c8\ubcbd\uc744 \uc5ec\ub294 \ud30c\ub8e8\uc528\uc564\uc528\n\n\ud68c\uc0ac\uc640 \uac1c\uc778\uc758 \ubc1c\uc804\uc774 \ud568\uaed8 \uc911\uc2dc\ub418\uace0\n\n\uac00\uc815\uacfc \uc774\uc6c3\uc744 \uc704\ud574 \uc6b0\ub9ac\uc758 \ud55c \uc190\uc744 \ub0b4\uc5b4\uc904 \uc218 \uc788\ub294\n\n\ud68c\uc0ac\uc18c\uac1c \ubc14\ub85c\uac00\uae30\n\nImage 10: main img2\n\n### Brilliant \ud504\ub808\uc784\uc6cc\ud06c\n\n\uc0ac\uc6a9\uc790 \ud3b8\uc758\uc131\uc744 \uadf9\ub300\ud654\ud55c \uc5c5\ubb34 \ud658\uacbd\uc744 \uc774\uc6a9\ud55c \ud6a8\uc728\uc131 \uc99d\uc9c4\ud558\uace0\n\n\uc2dc\uc2a4\ud15c \ud65c\uc6a9\ub3c4 \uc81c\uace0 \ubc0f \uac1c\ubc1c \ud3b8\uc758\uc131 \uc81c\uacf5\ud558\ub294\n\n\ud504\ub808\uc784\uc6cc\ud06c \ubc14\ub85c\uac00\uae30\n\nImage 11: main img3\n\n### \uc804\uc790\uad6c\ub9e4\uc194\ub8e8\uc158\n\n\uc6f9\uae30\ubc18\uc758 \uc194\ub8e8\uc158\uc73c\ub85c POR\uc0dd\uc131-\uacac\uc801-\uc785\ucc30-\uacc4\uc57d-\uc785\uace0\uae4c\uc9c0\uc758 \n\n \uc5c5\ubb34\uc640 \ud611\ub825\uc0ac \ud3ec\ud0c8 \ubc0f \ub0b4, \uc678\ubd80 \uae30\uad00 \ubc0f \uc2dc\uc2a4\ud15c \uc5f0\uacc4\ub97c \uc9c0\uc6d0\ud558\ub294\n\n\uc804\uc790\uad6c\ub9e4 \ubc14\ub85c\uac00\uae30\n\nPreviousNext\n\n#### PARUCNC AREA", "score": 0.7244226}, {"title": "\ud30c\ub8e8\uc528\uc564\uc528 2025\ub144 \uae30\uc5c5\uc815\ubcf4 - \uc9c1\uc6d0\uc218, \uadfc\ubb34\ud658\uacbd, \ubcf5\ub9ac\ud6c4\uc0dd \ub4f1 | \uc7a1\ucf54\ub9ac\uc544", "url": "https://www.jobkorea.co.kr/recruit/co_read/c/parucnc01", "content": "\uc804\uc790\uad6c\ub9e4\ubd84\uc57c \ubc0f \uad00\ub9ac\ud68c\uacc4\ubd84\uc57c\ub97c \ucd94\uce21\uc73c\ub85c B2B \uc6f9\uac1c\ubc1c \uc5c5\ubb34 \uc804\ubb38\uc5c5\uccb4\uc785\ub2c8\ub2e4. \n \n2018\ub144 \ud68c\uc0ac\uc758 \uccab \uc2e0\uc6a9\ud3c9\uac00 \uc774\ud6c4 \ub9e4\ub144 1\ub2e8\uacc4\uc529 \ub4f1\uae09\uc774 \uc62c\ub77c\uac00\uace0 \uc788\uc2b5\ub2c8\ub2e4. \n \n\"\ub0b4\uac00 \uc790\ub791\uc2a4\ub7ec\uc6cc \ud558\ub294 \ud68c\uc0ac\" \n\"\ub098\ub85c\uc778\ud574 \uc790\ub791\uc2a4\ub7ec\uc6cc \uc9c0\ub294 \ud68c\uc0ac\"\ub97c \uc0ac\ud6c8\uc73c\ub85c \n \n\uc0ac\ud6c8\uc5d0 \uac78\ub9de\ub294 \ud68c\uc0ac\uac00 \ub418\uae30 \uc704\ud574, \ub9d0\uc774 \uc2e4\ucc9c\uc774 \ub418\ub294 \n \n\uc9c1\uc6d0\uacfc \ud68c\uc0ac\uac00 \uc2e0\ub8b0\ub97c \uae30\ubc18\uc73c\ub85c \ub354\ubd88\uc5b4 \ubc1c\uc804\ud574 \ub098\uac00\ub294 \uae30\uc5c5\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.\n\n\ub354\ubcf4\uae30;)\n\n### \ubcf5\ub9ac\ud6c4\uc0dd\n\n\uc5f0\uae08\u00b7\ubcf4\ud5d8\n\n\uad6d\ubbfc\uc5f0\uae08\n\n\uace0\uc6a9\ubcf4\ud5d8\n\n\uc0b0\uc7ac\ubcf4\ud5d8\n\n\uac74\uac15\ubcf4\ud5d8\n\n\ud734\ubb34\u00b7\ud734\uac00\u00b7\ud589\uc0ac\n\n\uc8fc5\uc77c\uc81c\n\n\ubcf4\uc0c1\u00b7\uc218\ub2f9\u00b7\uc9c0\uc6d0\n\n\uc778\uc13c\ud2f0\ube0c\n\n\uc7a5\uae30\uadfc\uc18d \ud3ec\uc0c1\n\n### \uae30\uc5c5\uc704\uce58\n\n\uc11c\uc6b8 \uad6c\ub85c\uad6c \ub514\uc9c0\ud138\ub85c 285 (\uad6c\ub85c\ub3d9, \uc5d0\uc774\uc2a4\ud2b8\uc708\ud0c0\uc6cc1\ucc28) 807\ud638\n\n\uc9c0\ub3c4\ubcf4\uae30\n\n\uc7a1\ucf54\ub9ac\uc544 \uae30\uc5c5\uc815\ubcf4\uc640 NICE\ud3c9\uac00\uc815\ubcf4 \uae30\uc5c5\uc815\ubcf4\ub97c \uae30\ubc18\uc73c\ub85c \uae30\uc5c5 \ud504\ub85c\ud544\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc798\ubabb\ub41c \uc815\ubcf4\ub294 \uc2e0\uace0\ud574\uc8fc\uc2dc\uba74 \ube60\ub974\uac8c \uc804\ub2ec\ud558\uc5ec \uc218\uc815 \uac80\ud1a0\ud558\uaca0\uc2b5\ub2c8\ub2e4. \n\uac8c\uc2dc\ub41c \uc815\ubcf4\ub294 \ubb34\ub2e8\uc73c\ub85c \uc218\uc9d1 \ubc0f \ubc30\ud3ec\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. [...] \ubcf8\ubb38 \ubc14\ub85c\uac00\uae30\n\n\ud604\uc7ac \ube0c\ub77c\uc6b0\uc800\uc758 \ubcf4\uc548 \uc124\uc815\uc5d0 \ub530\ub77c \ubcf5\uc0ac\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \n\uc544\ub798 URL \uc8fc\uc18c\ub97c \ub4dc\ub798\uadf8 \ud6c4 Ctrl+C\ub97c \ub20c\ub7ec \ubcf5\uc0ac\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.\n\n\ub2eb\uae30;)\n\n\uc8fc\uc18c\uac00 \ubcf5\uc0ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \nCtrl+V\ub97c \ub20c\ub7ec \ubd99\uc5ec\ub123\uae30 \ud558\uc138\uc694.\n\n\ub2eb\uae30;)\n\n## \uae30\uc5c5\uc815\ubcf4\n\n\uae30\uc5c5 \uc0c1\uc138 \uc815\ubcf4\n\n| \uc0b0\uc5c5 | \uc194\ub8e8\uc158\u00b7SI\u00b7CRM\u00b7ERP | \uc0ac\uc6d0\uc218 | 51\uba85 |\n| \uae30\uc5c5\uad6c\ubd84 | \uc911\uc18c\uae30\uc5c5 | \uc124\ub9bd\uc77c | 2011.10.18 (15\ub144\ucc28) |\n| \ub300\ud45c\uc790 | \uac15\uc2b9\ub0a8 | \uc8fc\uc694\uc0ac\uc5c5 | \uad6c\ub9e4\ubd80\ubb38/\ud68c\uacc4\ubd80\ubb38/\ube44\ub300\uba74\uc6b4\uc601,\uac1c\ubc1c,\uc720\uc9c0\ubcf4\uc218/ITO/SI \ub4f1 |\n| 4\ub300\ubcf4\ud5d8 | \uad6d\ubbfc\uc5f0\uae08, \uac74\uac15\ubcf4\ud5d8, \uace0\uc6a9\ubcf4\ud5d8, \uc0b0\uc7ac\ubcf4\ud5d8 | \ud648\ud398\uc774\uc9c0 | |\n| \uc8fc\uc18c | \uc11c\uc6b8 \uad6c\ub85c\uad6c \ub514\uc9c0\ud138\ub85c 285 (\uad6c\ub85c\ub3d9, \uc5d0\uc774\uc2a4\ud2b8\uc708\ud0c0\uc6cc1\ucc28) 807\ud638 |\n\n## \uae30\uc5c5\uc774\uc288\n\n### \uc5f0\ud601", "score": 0.67192334}]