메뉴
HN
Hacker News 47일 전

마법의 듀얼: LLM 게임 플레이 성능을 테스트하다

IMP
8/10
핵심 요약

복잡한 카드 게임인 '매직 더 개더링'을 활용해 다양한 최신 LLM들의 게임 플레이 및 논리적 추론 능력을 평가하는 'MTG Bench'가 공개되었습니다. 개발자는 규칙 강제 엔진 없이 MCP(Model Context Protocol) 서버를 연동하여, 에이전트 루프에서 발생하는 API 토큰 비용을 획기적으로 절감하는 효율적인 테스트 방식을 제안했습니다.

번역된 본문

MTG Bench: LLM이 매직 더 개더링을 얼마나 잘 플레이할 수 있는지 테스트하기 2026년 6월 11일

전체 점수 (점수가 높을수록 좋음) 95.4 gpt-5.5 medium 90.3 claude-fable-5 medium 88.6 gpt-5.4 medium 85.7 gemini-3.5- flash medium 85 claude-fable-5 low 84.5 gpt-5.5 low 79.6 gemini-3.1-pro- preview medium 68.2 gpt-5.4-nano medium 60.9 qwen3.7-max medium 60.1 gpt-5.4-mini medium 59.7 grok-4.3 medium 43 kimi-k2.6 medium 39.8 claude-opus-4-8 medium 26.6 claude-opus-4-8 low 12.8 deepseek-v4-pro high

비용 대비 점수

  • gpt-5.4-nano (medium): 점수 68.2, 비용 $0.01
  • gpt-5.4-mini (medium): 점수 60.1, 비용 $0.03
  • gpt-5.4 (medium): 점수 88.6, 비용 $0.06
  • gpt-5.5 (low): 점수 84.5, 비용 $0.06
  • gpt-5.5 (medium): 점수 95.4, 비용 $0.10
  • claude-opus-4-8 (low): 점수 26.6, 비용 $0.18
  • claude-opus-4-8 (medium): 점수 39.8, 비용 $0.19
  • gemini-3.1-pro-preview (medium): 점수 79.6, 비용 $0.08
  • gemini-3.5-flash (medium): 점수 85.7, 비용 $0.09
  • grok-4.3 (medium): 점수 59.7, 비용 $0.02
  • deepseek-v4-pro (high): 점수 12.8, 비용 $0.01
  • kimi-k2.6 (medium): 점수 43, 비용 $0.03
  • qwen3.7-max (medium): 점수 60.9, 비용 $0.07
  • claude-fable-5 (low): 점수 85, 비용 $0.24
  • claude-fable-5 (medium): 점수 90.3, 비용 $0.30

(그래프 축: 0~100 점수 / $0.00 ~ $0.30 턴 당 시도 비용)

결과 각 벤치마크의 시뮬레이션을 보려면 위 차트를 클릭하세요.

성공 사례:

  • Fable 5: 점술(Scry) 랜드를 플레이하고 덱 맨 위의 카드를 확인합니다.
  • Gemini 3.5 flash: 점술(Scry), 발견(Discover), 그리고 수색(Tutor) 효과를 사용하는 복잡한 턴을 수행합니다.

실패 사례:

  • Opus 4.8: 카드를 덱으로 잘못 반환한 후, 스스로 실수했다고 보고합니다.
  • Gpt 5.5: 발견(Discover) 능력으로 추방된(Exiled) 카드를 덱으로 반환하는 것을 잊어버리고, 스스로 실수했다고 보고합니다.
  • Fabel 5: 도구 사용 실수를 한 뒤, 조용히 턴을 다시 시작하려고 시도합니다. (이는 평가 과정에서 적발됨)

벤치마크 작동 방식 핵심 아이디어는 LLM이 매직 더 개더링을 잘할 만큼 똑똑하다면, 규칙 엔진의 도움을 받지 않아도 될 만큼 똑똑해야 한다는 것입니다. 합법적인 행동만 하도록 강제하는 규칙 엔진은 최소한의 성능 바닥을 높여주겠지만, 시뮬레이션의 전반적인 품질을 개선하지는 못할 것이라고 생각합니다.

각 LLM 호출은 기본적인 라이브러리 조작 기능이 포함된 MCP 서버에 접근할 수 있습니다. 예를 들어, 덱 맨 위에서 카드를 뽑거나, 카드를 덱 맨 아래로 되돌리거나, 덱을 섞는 등의 행동이 가능합니다. 점술(Scry)이나 감시(Surveil) 같은 좀 더 고급 작업을 시뮬레이션하기 위해 여러 번의 라이브러리 도구 호출을 사용할 수 있습니다. 라이브러리를 제외한 모든 작업은 LLM이 직접 관할합니다.

벤치마크의 합법성 검사와 점수 채점은 모두 gpt-5.5 (medium)을 통해 이루어졌습니다. 제 테스트 결과, LLM들은 실제로 합법적인 턴을 수행하는 것보다 시뮬레이션된 턴이 합법적인지 평가하는 데 훨씬 능숙했습니다.

MCP 서버를 사용하는 이유 저는 모든 데이터와 LLM API 호출에 대한 완전한 통제권을 가지고 있습니다. 그렇다면 기본적인 함수/도구 호출 대신 왜 MCP를 사용할까요? 주된 이유는 OpenAI와 Anthropic이 API 요청에 원격 MCP 서버 URL을 제공하는 것을 허용하기 때문입니다. 즉, OpenAI나 Anthropic이 에이전트 루프를 직접 처리해 줍니다. 이는 두 가지 큰 이점이 있습니다. 첫째, 한 번의 API 호출로 이루어지기 때문에 도구를 사용할 때마다 발생하는 캐시된 입력 토큰 비용을 지불하지 않아도 됩니다. (적어도 OpenAI의 경우에는 그렇습니다. 이에 대해서는 아래에서 자세히 설명하겠습니다.) 둘째, 도구를 호출할 때마다 새로운 배치를 제출할 필요 없이 배치 API를 사용하여 50%의 비용을 절약할 수 있습니다.

입력 토큰 캐싱 제 생각에 캐시된 입력 토큰이 청구되는 방식은 에이전트 루프에는 맞지 않습니다. 이 가격 책정은 독립적인 요청에 대해서만 타당합니다. 여러 개의 독립적인 API 호출이 동일하고 큰 시스템 프롬프트로 시작된다면, 입력 캐싱을 통해 무료나 적은 캐싱 수수료로 할인을 받을 수 있습니다. 하지만 에이전트 루프에서는 도구를 호출할 때마다 큰 시스템 프롬프트에 대한 캐시된 입력 비용을 계속해서 청구받게 됩니다.

예를 들어보겠습니다. 시스템 프롬프트가 이미 캐시되어 있고 도구 호출로 인한 토큰 사용량은 무시할 수 있을 정도라고 가정해 봅시다. 대용량 시스템 프롬프트 = 10k 토큰 에이전트가 10개의 도구 기능을 호출합니다...

원문 보기
원문 보기 (영어)
MTG Bench: Testing how well LLMs can play magic June 11, 2026 Overall Score (higher is better) 95.4 gpt-5.5 medium 90.3 claude-fable-5 medium 88.6 gpt-5.4 medium 85.7 gemini-3.5- flash medium 85 claude-fable-5 low 84.5 gpt-5.5 low 79.6 gemini-3.1-pro- preview medium 68.2 gpt-5.4-nano medium 60.9 qwen3.7-max medium 60.1 gpt-5.4-mini medium 59.7 grok-4.3 medium 43 kimi-k2.6 medium 39.8 claude-opus-4-8 medium 26.6 claude-opus-4-8 low 12.8 deepseek-v4-pro high Cost vs Score Score gpt-5.4-nano gpt-5.4-nano medium Score 68.2 Cost $0.01 gpt-5.4-mini gpt-5.4-mini medium Score 60.1 Cost $0.03 gpt-5.4 gpt-5.4 medium Score 88.6 Cost $0.06 gpt-5.5 (low) gpt-5.5 low Score 84.5 Cost $0.06 gpt-5.5 (medium) gpt-5.5 medium Score 95.4 Cost $0.10 claude-opus-4-8 (low) claude-opus-4-8 low Score 26.6 Cost $0.18 claude-opus-4-8 (medium) claude-opus-4-8 medium Score 39.8 Cost $0.19 gemini-3.1-pro-preview gemini-3.1-pro-preview medium Score 79.6 Cost $0.08 gemini-3.5-flash gemini-3.5-flash medium Score 85.7 Cost $0.09 grok-4.3 grok-4.3 medium Score 59.7 Cost $0.02 deepseek-v4-pro deepseek-v4-pro high Score 12.8 Cost $0.01 kimi-k2.6 kimi-k2.6 medium Score 43 Cost $0.03 qwen3.7-max qwen3.7-max medium Score 60.9 Cost $0.07 claude-fable-5 (low) claude-fable-5 low Score 85 Cost $0.24 claude-fable-5 (medium) claude-fable-5 medium Score 90.3 Cost $0.30 0 25 50 75 100 $0.00 $0.05 $0.10 $0.15 $0.20 $0.25 $0.30 Cost per attempted turn (USD) Results Click on the charts above to view each benchmark's simulations. Example successes Fable 5 plays a scry land and looks at the top card of the deck Gemini 3.5 flash performs complex turn with scry, discover, and tutor effects Example failures Opus 4.8 erroneously returns a card to the deck then self reports the mistake Gpt 5.5 forgets to return cards exiled with discover to the deck and self reports the mistake Fabel 5 makes a tool mistake, then silently tries to restart the turn (caught by evaluation later) How the benchmark works The main idea is that if an LLM is smart enough to play good magic, then it is also smart enough to not need a rules engine. A rules engine that enforces legal actions would improve the performance floor, but I don't think it would improve the overall quality of the simulation. Each LLM call has access to an MCP server with primitive library operations. It can do things like draw a card from the top of the deck, return card to bottom of deck, and shuffle. To simulate more advanced operations, like scry or surveil , it can use multiple library tool calls. Everything other than the library is managed by the LLM. Legality checks and scoring for the benchmarks was all done with gpt-5.5 (medium). From my testing, LLMs were much better at evaluating if a simulated turn was legal than they were at actually performing a legal turn simulation. Why I choose to use an MCP server I have full control over all of the data and the LLM api calls, so why use MCP instead of basic function/tool calling? The main reason is that OpenAI and Anthropic allow you to provide a remote MCP server url in an api request. This means that OpenAI or Anthropic handle the agent loop. This has two major benefits. Since it is one api call, you don't pay for the cached input token cost after each tool use (at least with OpenAI. more on that later) You can use the batch api for 50% savings without having to submit a new batch after every tool call Input token caching In my opinion, the way cached input tokens are charged does not make sense for agent loops. The pricing makes sense for independent requests. If multiple independent api calls start with the same large system prompt, input caching gets you a discount for free, or for a small caching fee. With an agent loop, however, you are charged the cached input cost for a large system prompt after every tool call. Consider an example. Assume the system prompt is already cached and tool calls result in negligible token use. Large system prompt = 10k tokens Agent calls 10 tool functions (not parallel) Billed cached input tokens = 10k + 10k * 10 = 110k tokens I don't think it makes sense to charge for the system prompt after every agent turn if the LLM is only pausing for a fraction of a second while waiting for a tool function result. This is overlooking some details, like how it takes output tokens to call a tool, and the tool function result still needs to be processed as input tokens. But in my case, the api cost is dominated by the large system prompt being charged as cached input tokens after every agent turn. The pricing for an agent loop is understandable when your application code has the agent loop, and is making a new api call after each tool call. But it makes even less sense when you provide a remote MCP server and do not handle the agent loop yourself. OpenAI handles it correctly. A single api call to OpenAI with a remote MCP server will only ever charge you for the input prompt once. An Anthropic api call with remote MCP server, however, works like the previous example. Some real numbers, the gpt-5.5 (medium) benchmark had an average input tokens per magic turn of 11,386. The average for claude-fable-5 (medium) was 51,610. Over eager tool calling This benchmark punishes models that are too eager to call tools more than most benchmarks. In many cases, tool calls are only retrieving information, so if a model calls too many tools, the only downside is wasted input tokens and context window for the tool results. Even if the tool mutates state, it can usually be undone so the final result is correct. This is not the case when simulation magic. If you draw a card, then realize that was a mistake, you can't just put it back. Even if you do return the card to the deck, you now know what that card is, so the simulation is illegal. A common failure mode was the model starting a tool call, then realizing it was a mistake and having no way to correct it. All the library MCP functions have a required reason field. If you look at this example from Opus 4.8 , you can see that it draws a card for turn with reason "Draw for turn", then returns the card to the deck with reason "No-op check not needed; cancel". It then proceeds to return a card named "x" to the deck with reason "noop", then again with reason "stop". What's next I made MTG Auto Deck as a way to try out vibe coding. I had not been keeping up with the state of LLM based coding, and I ended up making this project and the benchmark without writing a single line of code by hand. I only made a live version with accounts and payments because of how quick it was to implement. The project is on GitHub if you want to run it and use your own api keys or local llama.cpp I wouldn't actually recommend paying for the live version. With the current cost and speed of models that that can accurately play magic, the app does not provide much utility. Simulating turns one at a time is slower than manually goldfishing your deck using one of the online tools. And it is too expensive to run dozens of simulations in parallel and give you a summary. As better cheaper LLMs get released, I think there is some version of this app that would be useful. I can imagine running hundreds of simulations, then giving statistical results about which cards are good and bad. Or automatically optimizing a deck by swapping out cards for you.