LLM에 도구 바인딩 (Binding Tools)

도구를 LLM에 바인딩하여 함수 호출 구현

LLM 모델에 도구를 바인딩하고 도구 호출 기능을 활용하는 방법을 다룬다.

AI
RAG
LangChain
저자

Kwangmin Kim

공개

2025년 07월 16일

1 LLM에 도구 바인딩 (Binding Tools)

  • Binding: LLM이 외부 도구/기능을 호출할 수 있도록 연결하는 것
  • LLM 모델이 도구(tool) 를 호출할 수 있으려면 chat 요청을 할 때 모델에 도구 스키마(tool schema) 를 전달해야 한다.
  • Tool Binding = (LLM = 뇌 + Tools = 손/발) = “LLM의 손 많아지기” = 도구 쥐어주기
    • 없을 때: 생각만 함 (추측)
    • 있을 때: 생각하면서 실제 손과 발을 움직여 행동하게 된다. (검증)
    • 하지만 “언제 손을 쓸지 판단”하는 뇌(LLM 내부 신뢰도 시스템)가 약하면, 손이 있어도 쓸 줄 모르게 된다.
  • 용어
    • Binding Tools = Function Calling = Tool Calling
LLM (Claude)
    ↓
Tool Binding Layer
    ↓
실제 Tools (Web Search, Code Execution, File Access 등)
  • 도구 호출(tool calling) 기능을 지원하는 LangChain Chat Model 은 .bind_tools() 메서드를 구현하여
  • LangChain 도구 객체, Pydantic 클래스 또는 JSON 스키마 목록을 수신하고 공급자별 예상 형식으로 채팅 모델에 바인딩(binding) 한다.
  • 바인딩된 Chat Model 의 후속 호출은 모델 API에 대한 모든 호출에 도구 스키마를 포함
  • 참고) 모든 LLM 모델이 Tool Calling이 가능한 것은 아님.
    • 하지만, 요즘 트렌드는 도구 사용이 대세이기 때문에 거의 모든 모델에 이 기능이 구현될 것.
    • 만약 오류가 나면 아직 Tool Calling 기능이 LLM 모델에 구현이 안된 것.
# API KEY를 환경변수로 관리하기 위한 설정 파일
from dotenv import load_dotenv

# API KEY 정보로드
load_dotenv()
# LangSmith 추적을 설정합니다. https://smith.langchain.com
# !pip install -qU langchain-teddynote
from langchain_teddynote import logging

# 프로젝트 이름을 입력합니다.
logging.langsmith("CH15-Bind-Tools")

2 LLM에 바인딩할 Tool 정의

실험을 위한 도구(tool) 를 정의한다. - get_word_length : 단어의 길이를 반환하는 함수 - add_function : 두 숫자를 더하는 함수 - naver_news_crawl : 네이버 뉴스 기사를 크롤링하여 본문 내용을 반환하는 함수

참고 - 도구를 정의할 때 @tool 데코레이터를 사용하여 도구를 정의 - docstring 은 가급적 영어로 작성하는 것을 권장

import re
import requests
from bs4 import BeautifulSoup
from langchain.agents import tool


# 도구를 정의합니다.
@tool
def get_word_length(word: str) -> int:
    """Returns the length of a word."""
    return len(word)


@tool
def add_function(a: float, b: float) -> float:
    """Adds two numbers together."""
    return a + b


# 오직 Naver 형식의 URL만 가능
@tool
def naver_news_crawl(news_url: str) -> str:
    """Crawls a 네이버 (naver.com) news article and returns the body content."""
    # HTTP GET 요청 보내기
    response = requests.get(news_url)

    # 요청이 성공했는지 확인
    if response.status_code == 200:
        # BeautifulSoup을 사용하여 HTML 파싱
        soup = BeautifulSoup(response.text, "html.parser")

        # 원하는 정보 추출
        title = soup.find("h2", id="title_area").get_text()
        content = soup.find("div", id="contents").get_text()
        cleaned_title = re.sub(r"\n{2,}", "\n", title)
        cleaned_content = re.sub(r"\n{2,}", "\n", content)
    else:
        print(f"HTTP 요청 실패. 응답 코드: {response.status_code}")

    return f"{cleaned_title}\n{cleaned_content}"


tools = [get_word_length, add_function, naver_news_crawl]

3 bind_tools() 로 LLM 에 도구 바인딩

llm 모델에 bind_tools() 를 사용하여 도구를 바인딩한다.

from langchain_openai import ChatOpenAI

# 모델 생성
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

# 도구 바인딩
llm_with_tools = llm.bind_tools(tools)
  • 실행결과를 확인한다.
  • 결과는 tool_calls 에 저장됨
  • 따라서, .tool_calls 를 확인하여 도구 호출 결과를 확인
  • 만약, LLM이 도구 활용 성능이 떨어진다고 생각되면 LLM 모델 (뇌)을 바꾸면 된다.
    • 예, “gpt-4o-mini” > “gpt-4o-1”

참고 - name 은 도구의 이름을 의미 - args 는 도구에 전달되는 인자를 의미

# 실행 결과
#llm_with_tools.invoke("What is the length of the word 'teddynote'?") # 도구를 안쓴 것
llm_with_tools.invoke("What is the length of the word 'teddynote'?").tool_calls # 도구를 쓴 것
[{'name': 'get_word_length',  'args': {'word': 'teddynote'},  'id': 'call_ReeUlCuSd35Marox3yaxMgcH',  'type': 'tool_call'}]
  • llm_with_tools는 어떤 도구를 쓸 것인지 판단만 한 것 (판단 결과만 출력됨)
  • 다음으로는 llm_with_toolsJsonOutputToolsParser 를 연결하여 tool_calls 를 parsing 하여 결과를 확인
    • JsonOutputToolsParser: llm_with_tools의 도구 사용 판단 결과에 어떤 함수 즉, 어떤 도구에 어떤 argument를 넣어야하는지 parsing만 해줌
from langchain_core.output_parsers.openai_tools import JsonOutputToolsParser

# 도구 바인딩 + 도구 파서
chain = llm_with_tools | JsonOutputToolsParser(tools=tools)

# 실행 결과
tool_call_results = chain.invoke("What is the length of the word 'teddynote'?")
print(tool_call_results, end="\n\n==========\n\n")
# 첫 번째 도구 호출 결과
single_result = tool_call_results[0]
# 도구 이름
print(single_result["type"])
# 도구 인자
print(single_result["args"])

실행 결과는 다음과 같습니다.

[{'args': {'word': 'teddynote'}, 'type': 'get_word_length'}]

==========

get_word_length
{'word': 'teddynote'}

참고 - type: 도구의 이름 - args: 도구에 전달되는 인자

  • execute_tool_calls: 도구 이름과 일치하는 도구를 for loop을 돌면서 찾아 직접호출하여 실행
tool_call_results[0]["type"], tools[0].name
  • execute_tool_calls 함수는 도구를 찾아 args 를 전달하여 도구를 실행
  • 즉, type 은 도구의 이름을 의미하고 args 는 도구에 전달되는 인자를 의미
def execute_tool_calls(tool_call_results):
    """
    도구 호출 결과를 실행하는 함수

    :param tool_call_results: 도구 호출 결과 리스트
    :param tools: 사용 가능한 도구 리스트
    """
    # 도구 호출 결과 리스트를 순회합니다.
    for tool_call_result in tool_call_results:
        # 도구의 이름과 인자를 추출합니다.
        tool_name = tool_call_result["type"]  # 도구의 이름(함수명)
        tool_args = tool_call_result["args"]  # 도구에 전달되는 인자

        # 도구 이름과 일치하는 도구를 찾아 실행합니다.
        # next() 함수를 사용하여 일치하는 첫 번째 도구를 찾습니다.
        matching_tool = next((tool for tool in tools if tool.name == tool_name), None)

        if matching_tool:
            # 일치하는 도구를 찾았다면 해당 도구를 실행합니다.
            result = matching_tool.invoke(tool_args)
            # 실행 결과를 출력합니다.
            print(f"[실행도구] {tool_name} [Argument] {tool_args}\n[실행결과] {result}")
        else:
            # 일치하는 도구를 찾지 못했다면 경고 메시지를 출력합니다.
            print(f"경고: {tool_name}에 해당하는 도구를 찾을 수 없습니다.")


# 도구 호출 실행
# 이전에 얻은 tool_call_results를 인자로 전달하여 함수를 실행합니다.
execute_tool_calls(tool_call_results)
[실행도구] get_word_length
[실행결과] 9

4 위의 일련의 과정을 한 번에 실행

  • bind_tools + Parser + Execution
    • llm_with_tools : 도구를 바인딩한 모델
    • JsonOutputToolsParser : 도구 호출 결과를 파싱하는 파서
    • execute_tool_calls : 도구 호출 결과를 실행하는 함수
  • 흐름 정리
    1. 모델에 도구를 바인딩
    2. 도구 호출 결과를 파싱
    3. 도구 호출 결과를 실행
from langchain_core.output_parsers.openai_tools import JsonOutputToolsParser

# bind_tools + Parser + Execution
chain = llm_with_tools | JsonOutputToolsParser(tools=tools) | execute_tool_calls
# 실행 결과
chain.invoke("What is the length of the word 'teddynote'?")
# 실행 결과
chain.invoke("114.5 + 121.2")
print(114.5 + 121.2)
[실행도구] add_function
[실행결과] 235.7
235.7
# 실행 결과
chain.invoke(
    "뉴스 기사 내용을 크롤링해줘: https://n.news.naver.com/mnews/hotissue/article/092/0002347672?type=series&cid=2000065"
)
[실행도구] naver_news_crawl
[실행결과] [미장브리핑] 9월 미국 CPI 주목…3분기 S&P500 실적 발표

            ▲10일(현지시간) 미국 9월 소비자물가지수(CPI) 발표 예정. 고용 지표가 양호하게 나온 가운데 물가 지표 주목. 9월 미국 비농업고용 25만4천명 증가해 시장 예상치 14만명 크게 상회. 이는 6개월 래 최대 규모로 지난 12개월 평균값 20만3천명 증가한 것보다도 높은 수치. 9월 실업률은 4.1%로 2개월 연속 하락했으며, 평균 시간당 임금은 전년 동월 대비 4% 증가해 5월 이후 최고 수준.▲시장에서 9월 헤드라인 CPI는 8월 전년 동월 대비 2.6% 로 5개월 연속 둔화하고 9월에는 2.3% 증가로 추가 하락 예상. 전월 대비도 8월 0.2% 둔화 예상. 근원 CPI는 지난 8월 3.2%와 비슷한 수준 관측.▲11일에는 미국 9월 제조업물가지수(PPI) 발표. 지난 6월 부터 8월까지 반등 추세 꺾여. 8월은 1.7% 증가.
(사진=이미지투데이)▲11월 미국 연방준비제도(연준) 공개시장위원회(FOMC) 에서 0.50%p 인하 기대가 크케 후퇴한 가운데, 9일에는 FOMC 의사록 공개. 지난 9월 회의에서 빅컷(0.50%p) 단행한 배경과 인플레이션 전망에 대한 논의를 알 수 있을 것으로 보여.▲미국 스탠다드앤푸어스(S&P) 500 기업의 3분기 실적 발표 시작. 평균 이익증가율 추정치는 전년 동기 대비 4.6%로 5개분기 연속 플러스이나 증가폭은 둔화 예상. 11일부터 JP모건체이스, 웰스파고 등 대형은행들의 실적 발표.▲FTSE 러셀은 8일 정례 시장분류 결과를 발표. 한국은 2022년 관찰대상국 지정 이후 금번 시장접근성 등급(L1) 상향으로 세계국채지수(WGBI) 에 편입될 지 관심. 주식의 경우 지난 2009년부터 선진국 지수에 편입돼 있는 한국 증시에 대해 공매도 제한 등을 이유로 관찰 대상국으로 지정할지 관심. 지정되더라도 검토 기간이 있어 즉각 제외되지는 않음.
손희연 기자(kunst@zdnet.co.kr)
기자 프로필
손희연 기자
구독
구독중
구독자 0
응원수
0
디지털이 접목되는 금융·식음료업계를 취재합니다 
나도 모르게 대출 신청이?…"인뱅 통해 사전차단 가능"
우리은행 올해만 세 번째 금융사고…"허위서류로 55억 대출"
지디넷코리아의 구독 많은 기자를 구독해보세요!
닫기
Copyright ⓒ ZDNet Korea. All rights reserved. 무단 전재 및 재배포 금지.

이 기사는 언론사에서 IT 섹션으로 분류했습니다.
기사 섹션 분류 안내
기사의 섹션 정보는 해당 언론사의 분류를 따르고 있습니다. 언론사는 개별 기사를 2개 이상 섹션으로 중복 분류할 수 있습니다.
닫기
구독
메인에서 바로 보는 언론사 편집 뉴스 지금 바로 구독해보세요!
구독중
메인에서 바로 보는 언론사 편집 뉴스 지금 바로 확인해보세요!
지디넷코리아 '홈페이지'
QR 코드를 클릭하면 크게 볼 수 있어요.
QR을 촬영해보세요.
지디넷코리아 '홈페이지'
닫기
네이버 채널 구독하기
            주요뉴스해당 언론사에서 선정하며 언론사 페이지(아웃링크)로 이동해 볼 수 있습니다.
KB금융, 광주 1인 여성 자영업자에 월 100만원 지원
아파트만? 이제 빌라 주담대도 갈아타자
카카오뱅크, 6일 새벽 금융거래 일시 중단
우리은행 올해만 세 번째 금융사고…"허위서류로 55억 대출"
이 기사를 추천합니다
기사 추천은 24시간 내 50회까지 참여할 수 있습니다.
닫기
쏠쏠정보
0
흥미진진
0
공감백배
0
분석탁월
0
후속강추
0

모두에게 보여주고 싶은 기사라면?beta
이 기사를 추천합니다 버튼을 눌러주세요.  집계 기간 동안 추천을 많이 받은 기사는 네이버 자동 기사배열 영역에 추천 요소로 활용됩니다.
레이어 닫기

연재
미장브리핑
구독 명
구독
구독중
구독해주셔서 감사합니다
구독한 연재는 설정 페이지에서확인할 수 있습니다
닫기
더보기
9월 미국 CPI 주목…3분기 S&P500 실적 발표
중동발 긴장 고조…한 때 원유값 급등
9월 고용지표 발표 주목…부통령 후보 토론회 개최
지디넷코리아 언론사홈 바로가기

기자 구독 후 기사보기
구독 없이 계속 보기
연재 구독 후 기사보기
구독 없이 계속 보기

5 bind_tools > Agent & AgentExecutor 로 대체

  • bind_tools() 는 모델에 사용할 수 있는 스키마(도구)를 제공
    • bind_tools()의 일련의 복잡한 과정을 Agent & AgentExecutor로 대체
    • bind_tools()은 같은 도구를 반복적으로 사용하기 힘듦, 하지만 Agent Executer 쉬움
  • AgentExecutor 는 실제로 llm 호출, 올바른 도구로 라우팅, 실행, 모델 재호출 등을 위한 실행 루프를 생성
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_openai import ChatOpenAI

# Agent 프롬프트 생성
prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "You are very powerful assistant, but don't know current events",
        ),
        ("user", "{input}"),
        MessagesPlaceholder(variable_name="agent_scratchpad"),
    ]
)

# 모델 생성
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
from langchain.agents import create_tool_calling_agent
from langchain.agents import AgentExecutor

# 이전에 정의한 도구 사용
tools = [get_word_length, add_function, naver_news_crawl]

# Agent 생성
agent = create_tool_calling_agent(llm, tools, prompt)

# AgentExecutor 생성
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,
    handle_parsing_errors=True,
)
# Agent 실행
result = agent_executor.invoke({"input": "How many letters in the word `teddynote`?"})

# 결과 확인
print(result["output"])

Entering new AgentExecutor chain...

Invoking: `get_word_length` with `{'word': 'teddynote'}`


The word "teddynote" has 9 letters.

Finished chain.
The word "teddynote" has 9 letters.
# Agent 실행
result = agent_executor.invoke({"input": "114.5 + 121.2 의 계산 결과는?"})

# 결과 확인
print(result["output"])
Entering new AgentExecutor chain...

Invoking: `add_function` with `{'a': 114.5, 'b': 121.2}`


235.7114.5 + 121.2의 계산 결과는 235.7입니다.

Finished chain.
114.5 + 121.2의 계산 결과는 235.7입니다.

한 번의 실행으로 끝나는 것이 아닌, 모델이 자신의 결과를 확인하고 다시 자신을 호출하는 과정을 거칩니다.

# Agent 실행
result = agent_executor.invoke(
    {"input": "114.5 + 121.2 + 34.2 + 110.1 의 계산 결과는?"}
)

# 결과 확인
print(result["output"])
print("==========\n")
print(114.5 + 121.2 + 34.2 + 110.1)
Entering new AgentExecutor chain...

Invoking: `add_function` with `{'a': 114.5, 'b': 121.2}`


235.7
Invoking: `add_function` with `{'a': 34.2, 'b': 110.1}`


144.3
Invoking: `add_function` with `{'a': 235.7, 'b': 144.3}`


380.0114.5 + 121.2 + 34.2 + 110.1의 계산 결과는 380.0입니다.

Finished chain.
114.5 + 121.2 + 34.2 + 110.1의 계산 결과는 380.0입니다.
==========

380.0

이번에는 뉴스 결과를 크롤링 해서 요약 해달라는 요청을 수행

result = agent_executor.invoke(
    {
        "input": "뉴스 기사를 요약해 줘: https://n.news.naver.com/mnews/hotissue/article/092/0002347672?type=series&cid=2000065"
    }
)
print(result["output"])

Entering new AgentExecutor chain...

Invoking: `naver_news_crawl` with `{'news_url': 'https://n.news.naver.com/mnews/hotissue/article/092/0002347672?type=series&cid=2000065'}`


[미장브리핑] 9월 미국 CPI 주목…3분기 S&P500 실적 발표

            ▲10일(현지시간) 미국 9월 소비자물가지수(CPI) 발표 예정. 고용 지표가 양호하게 나온 가운데 물가 지표 주목. 9월 미국 비농업고용 25만4천명 증가해 시장 예상치 14만명 크게 상회. 이는 6개월 래 최대 규모로 지난 12개월 평균값 20만3천명 증가한 것보다도 높은 수치. 9월 실업률은 4.1%로 2개월 연속 하락했으며, 평균 시간당 임금은 전년 동월 대비 4% 증가해 5월 이후 최고 수준.▲시장에서 9월 헤드라인 CPI는 8월 전년 동월 대비 2.6% 로 5개월 연속 둔화하고 9월에는 2.3% 증가로 추가 하락 예상. 전월 대비도 8월 0.2% 둔화 예상. 근원 CPI는 지난 8월 3.2%와 비슷한 수준 관측.▲11일에는 미국 9월 제조업물가지수(PPI) 발표. 지난 6월 부터 8월까지 반등 추세 꺾여. 8월은 1.7% 증가.
(사진=이미지투데이)▲11월 미국 연방준비제도(연준) 공개시장위원회(FOMC) 에서 0.50%p 인하 기대가 크케 후퇴한 가운데, 9일에는 FOMC 의사록 공개. 지난 9월 회의에서 빅컷(0.50%p) 단행한 배경과 인플레이션 전망에 대한 논의를 알 수 있을 것으로 보여.▲미국 스탠다드앤푸어스(S&P) 500 기업의 3분기 실적 발표 시작. 평균 이익증가율 추정치는 전년 동기 대비 4.6%로 5개분기 연속 플러스이나 증가폭은 둔화 예상. 11일부터 JP모건체이스, 웰스파고 등 대형은행들의 실적 발표.▲FTSE 러셀은 8일 정례 시장분류 결과를 발표. 한국은 2022년 관찰대상국 지정 이후 금번 시장접근성 등급(L1) 상향으로 세계국채지수(WGBI) 에 편입될 지 관심. 주식의 경우 지난 2009년부터 선진국 지수에 편입돼 있는 한국 증시에 대해 공매도 제한 등을 이유로 관찰 대상국으로 지정할지 관심. 지정되더라도 검토 기간이 있어 즉각 제외되지는 않음.
손희연 기자(kunst@zdnet.co.kr)
기자 프로필
손희연 기자
구독
구독중
구독자 0
응원수
0
디지털이 접목되는 금융·식음료업계를 취재합니다 
나도 모르게 대출 신청이?…"인뱅 통해 사전차단 가능"
우리은행 올해만 세 번째 금융사고…"허위서류로 55억 대출"
지디넷코리아의 구독 많은 기자를 구독해보세요!
닫기
Copyright ⓒ ZDNet Korea. All rights reserved. 무단 전재 및 재배포 금지.

이 기사는 언론사에서 IT 섹션으로 분류했습니다.
기사 섹션 분류 안내
기사의 섹션 정보는 해당 언론사의 분류를 따르고 있습니다. 언론사는 개별 기사를 2개 이상 섹션으로 중복 분류할 수 있습니다.
닫기
구독
메인에서 바로 보는 언론사 편집 뉴스 지금 바로 구독해보세요!
구독중
메인에서 바로 보는 언론사 편집 뉴스 지금 바로 확인해보세요!
지디넷코리아 '홈페이지'
QR 코드를 클릭하면 크게 볼 수 있어요.
QR을 촬영해보세요.
지디넷코리아 '홈페이지'
닫기
네이버 채널 구독하기
            주요뉴스해당 언론사에서 선정하며 언론사 페이지(아웃링크)로 이동해 볼 수 있습니다.
KB금융, 광주 1인 여성 자영업자에 월 100만원 지원
아파트만? 이제 빌라 주담대도 갈아타자
카카오뱅크, 6일 새벽 금융거래 일시 중단
우리은행 올해만 세 번째 금융사고…"허위서류로 55억 대출"
이 기사를 추천합니다
기사 추천은 24시간 내 50회까지 참여할 수 있습니다.
닫기
쏠쏠정보
0
흥미진진
0
공감백배
0
분석탁월
0
후속강추
0

모두에게 보여주고 싶은 기사라면?beta
이 기사를 추천합니다 버튼을 눌러주세요.  집계 기간 동안 추천을 많이 받은 기사는 네이버 자동 기사배열 영역에 추천 요소로 활용됩니다.
레이어 닫기

연재
미장브리핑
구독 명
구독
구독중
구독해주셔서 감사합니다
구독한 연재는 설정 페이지에서확인할 수 있습니다
닫기
더보기
9월 미국 CPI 주목…3분기 S&P500 실적 발표
중동발 긴장 고조…한 때 원유값 급등
9월 고용지표 발표 주목…부통령 후보 토론회 개최
지디넷코리아 언론사홈 바로가기

기자 구독 후 기사보기
구독 없이 계속 보기
연재 구독 후 기사보기
구독 없이 계속 보기
기사 요약:

9월 10일(현지시간) 미국의 소비자물가지수(CPI) 발표가 예정되어 있으며, 고용 지표가 양호하게 나온 가운데 물가 지표에 대한 관심이 집중되고 있다. 9월 비농업 고용은 25만4천명 증가하여 시장 예상치를 크게 상회했으며, 실업률은 4.1%로 2개월 연속 하락했다. 평균 시간당 임금은 전년 대비 4% 증가했다.

9월 헤드라인 CPI는 8월 대비 2.6%로 5개월 연속 둔화되었고, 9월에는 2.3% 증가할 것으로 예상된다. 11일에는 제조업 물가지수(PPI) 발표도 예정되어 있다. 또한, 미국 S&P 500 기업의 3분기 실적 발표가 시작되며, 평균 이익 증가율은 전년 동기 대비 4.6%로 예상된다.

FTSE 러셀은 한국의 시장 접근성 등급을 상향 조정할 가능성에 대한 관심이 모아지고 있다.

Finished chain.
기사 요약:

9월 10일(현지시간) 미국의 소비자물가지수(CPI) 발표가 예정되어 있으며, 고용 지표가 양호하게 나온 가운데 물가 지표에 대한 관심이 집중되고 있다. 9월 비농업 고용은 25만4천명 증가하여 시장 예상치를 크게 상회했으며, 실업률은 4.1%로 2개월 연속 하락했다. 평균 시간당 임금은 전년 대비 4% 증가했다.

9월 헤드라인 CPI는 8월 대비 2.6%로 5개월 연속 둔화되었고, 9월에는 2.3% 증가할 것으로 예상된다. 11일에는 제조업 물가지수(PPI) 발표도 예정되어 있다. 또한, 미국 S&P 500 기업의 3분기 실적 발표가 시작되며, 평균 이익 증가율은 전년 동기 대비 4.6%로 예상된다.

FTSE 러셀은 한국의 시장 접근성 등급을 상향 조정할 가능성에 대한 관심이 모아지고 있다.

Subscribe

Enjoy this blog? Get notified of new posts by email: