<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tool Calling | Yufei Liu's Homepages</title><link>https://liu-yufei.github.io/tags/tool-calling/</link><atom:link href="https://liu-yufei.github.io/tags/tool-calling/index.xml" rel="self" type="application/rss+xml"/><description>Tool Calling</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 01 Mar 2026 00:00:00 +0000</lastBuildDate><image><url>https://liu-yufei.github.io/media/icon_hu17033853472409137288.png</url><title>Tool Calling</title><link>https://liu-yufei.github.io/tags/tool-calling/</link></image><item><title>OneFont: A Unified Agent for End-to-End Font Creation</title><link>https://liu-yufei.github.io/publication/onefont/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><guid>https://liu-yufei.github.io/publication/onefont/</guid><description>&lt;section class="onefont-motivation" aria-labelledby="onefont-motivation-title">
&lt;figure class="onefont-motivation__visual">
&lt;h2>From Manual Model Selection to OneFont&lt;/h2>
&lt;div class="onefont-motivation__canvas">
&lt;img src="https://liu-yufei.github.io/publication/onefont/onefont-introduction.png" width="838" height="708" alt="Comparison of a default font model, expert model selection, and OneFont for generating a Planet Earth design">
&lt;/div>
&lt;figcaption>OneFont completes model selection and refinement in a single agent workflow.&lt;/figcaption>
&lt;/figure>
&lt;div class="onefont-motivation__copy">
&lt;h2 id="onefont-motivation-title">Motivation&lt;/h2>
&lt;p>Existing diffusion and MLLM-based font generation systems often focus on a single editing task. Supporting a new script or generation workflow can require substantial task-specific fine-tuning, while selecting the right model and repairing an imperfect result still depend on expert intervention.&lt;/p>
&lt;p>OneFont treats end-to-end font creation as an MLLM agent task. Given a user request, it selects suitable models and tools, generates candidate results, verifies readability and style, and performs local refinement when needed.&lt;/p>
&lt;/div>
&lt;/section>
&lt;style>
.onefont-motivation {
display: grid;
grid-template-columns: minmax(0, 1.18fr) minmax(18rem, 0.82fr);
gap: clamp(1.8rem, 4vw, 3.75rem);
align-items: center;
margin: 2.5rem calc(50% - 50vw) 4rem;
padding: 0 max(1.25rem, calc((100vw - 1180px) / 2));
}
.onefont-motivation figure { margin: 0; min-width: 0; }
.onefont-motivation h2 {
margin: 0 0 1rem;
color: #163f7b;
font-size: clamp(1.55rem, 2.5vw, 2.15rem);
line-height: 1.15;
}
.onefont-motivation__canvas {
padding: clamp(0.65rem, 1.25vw, 1rem);
border: 1px solid rgba(148, 163, 184, 0.28);
border-radius: 1rem;
background: #fff;
box-shadow: 0 0.8rem 2rem rgba(15, 23, 42, 0.1);
}
.onefont-motivation img { display: block; width: 100%; height: auto; }
.onefont-motivation figcaption {
margin-top: 0.75rem;
color: #64748b;
font-size: 0.84rem;
line-height: 1.55;
}
.onefont-motivation__copy p { margin: 0 0 1.15rem; line-height: 1.8; }
.dark .onefont-motivation h2 { color: #91b8ef; }
@media (max-width: 820px) {
.onefont-motivation { grid-template-columns: 1fr; align-items: start; }
}
&lt;/style>
&lt;h2 id="method-overview">Method Overview&lt;/h2>
&lt;p>OneFont converts each request into a reasoning trace and structured tool calls. Its generation library covers text-to-art fonts, style transfer, vector font generation, retrieval, handwriting generation, and local editing. Supervised fine-tuning teaches the agent to plan and invoke these tools, while GRPO-based preference alignment improves the quality of its generation strategy. During inference, a graph-based planner verifies intermediate results, backtracks when necessary, and applies local refinement.&lt;/p>
&lt;section class="onefont-pipeline" aria-labelledby="onefont-pipeline-title">
&lt;header class="onefont-pipeline__header">
&lt;h2 id="onefont-pipeline-title">Method Breakdown&lt;/h2>
&lt;p>The OneFont framework combines a multimodal generation tool library, two-stage SFT and preference-alignment training, and a graph-based planner for verification and backtracking.&lt;/p>
&lt;/header>
&lt;div class="onefont-pipeline__body">
&lt;aside class="onefont-reward" aria-label="Reward design">
&lt;h3>Reward Design&lt;/h3>
&lt;div class="onefont-formula">
&lt;var>R&lt;/var>&lt;sub>hybrid&lt;/sub> = λ&lt;sub>think&lt;/sub>&lt;var>R&lt;/var>&lt;sub>think&lt;/sub> + λ&lt;sub>tool&lt;/sub>&lt;var>R&lt;/var>&lt;sub>tool&lt;/sub>&lt;br>
+ λ&lt;sub>style&lt;/sub>&lt;var>R&lt;/var>&lt;sub>style&lt;/sub> + λ&lt;sub>visual&lt;/sub>&lt;var>R&lt;/var>&lt;sub>visual&lt;/sub>
&lt;/div>
&lt;div class="onefont-ocr">
&lt;h3>OCR Coverage Example&lt;/h3>
&lt;div class="onefont-ocr__example">
&lt;span class="onefont-ocr__target">Hello, World!&lt;/span>
&lt;span class="onefont-ocr__arrow">↓&lt;/span>
&lt;span class="onefont-ocr__result">EasyOCR&lt;/span>
&lt;/div>
&lt;code class="onefont-code">ocr_result = “Hello, World”&lt;br>target = “Hello, World!”&lt;br>S&lt;sub>OCR&lt;/sub> = 11 / 12&lt;/code>
&lt;/div>
&lt;/aside>
&lt;figure class="onefont-framework-image">
&lt;div class="onefont-framework-image__canvas">
&lt;img src="https://liu-yufei.github.io/publication/onefont/onefont-method-overview.png" width="1200" height="596" alt="OneFont training framework, generation tool library, and graph-based planner">
&lt;/div>
&lt;figcaption>Training framework and graph-based inference planner&lt;/figcaption>
&lt;/figure>
&lt;/div>
&lt;div class="onefont-pipeline__steps" aria-label="OneFont workflow summary">
&lt;div class="onefont-summary-step">&lt;span class="onefont-summary-step__number">01&lt;/span>&lt;div>&lt;strong>Tool Library&lt;/strong>&lt;span>Text, image, and answer tools for multimodal font creation&lt;/span>&lt;/div>&lt;/div>
&lt;div class="onefont-summary-step">&lt;span class="onefont-summary-step__number">02&lt;/span>&lt;div>&lt;strong>Model Training&lt;/strong>&lt;span>SFT builds tool-use ability, then GRPO aligns generation preferences&lt;/span>&lt;/div>&lt;/div>
&lt;div class="onefont-summary-step">&lt;span class="onefont-summary-step__number">03&lt;/span>&lt;div>&lt;strong>Model Inference&lt;/strong>&lt;span>The planner verifies results, backtracks when needed, and refines the output&lt;/span>&lt;/div>&lt;/div>
&lt;/div>
&lt;/section>
&lt;style>
.onefont-pipeline {
--of-navy: #163f7b;
--of-gold: #dc9f22;
--of-line: #cad7e8;
--of-soft: #f6f9fd;
margin: 3rem calc(50% - 50vw);
padding: 0 max(1.25rem, calc((100vw - 1180px) / 2));
color: #172033;
}
.dark .onefont-pipeline { --of-line: #334155; --of-soft: #111827; color: #e5e7eb; }
.onefont-pipeline__header { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; margin-bottom: 1.4rem; padding-bottom: 0.9rem; border-bottom: 5px solid var(--of-navy); }
.onefont-pipeline__header h2 { margin: 0; color: var(--of-navy); font-size: clamp(2rem, 4vw, 3.7rem); line-height: 1; letter-spacing: -0.035em; }
.onefont-pipeline__header p { max-width: 42rem; margin: 0; color: #64748b; text-align: right; font-size: 0.95rem; line-height: 1.55; }
.dark .onefont-pipeline__header h2 { color: #91b8ef; }
.onefont-pipeline__body { display: grid; grid-template-columns: minmax(240px, 0.55fr) minmax(0, 1.8fr); gap: 1.4rem; align-items: stretch; }
.onefont-reward { padding: 1.25rem; border-left: 7px solid var(--of-navy); background: var(--of-soft); }
.onefont-pipeline h3 { margin: 0 0 0.75rem; color: var(--of-navy); font-size: 1.15rem; }
.dark .onefont-pipeline h3 { color: #a8c7f2; }
.onefont-formula { margin: 0 0 1.3rem; padding: 1rem 0.25rem; overflow-x: auto; border-top: 1px solid var(--of-line); border-bottom: 1px solid var(--of-line); text-align: center; font-family: Georgia, "Times New Roman", serif; font-size: clamp(0.78rem, 1.3vw, 1rem); line-height: 1.9; white-space: nowrap; }
.onefont-ocr { padding-top: 1rem; border-top: 1px solid var(--of-line); }
.onefont-ocr__example { margin: 0.75rem 0; text-align: center; }
.onefont-ocr__target { display: inline-block; color: #efb500; font-size: 1.55rem; font-weight: 900; -webkit-text-stroke: 1px #9a6e00; }
.onefont-ocr__arrow { display: block; color: var(--of-gold); font-size: 1.35rem; line-height: 1; }
.onefont-ocr__result { color: #64748b; font-weight: 750; }
.onefont-code { display: block; margin-top: 0.8rem; color: #226fbd; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.78rem; line-height: 1.7; }
.onefont-framework-image { display: flex; flex-direction: column; justify-content: center; min-width: 0; margin: 0; }
.onefont-framework-image__canvas { padding: 0.75rem; border: 1px solid var(--of-line); border-radius: 0.8rem; background: #fff; box-shadow: 0 0.65rem 1.8rem rgba(15, 23, 42, 0.08); }
.onefont-framework-image img { display: block; width: 100%; height: auto; }
.onefont-framework-image figcaption { margin-top: 0.65rem; color: #64748b; text-align: center; font-size: 0.82rem; }
.onefont-pipeline__steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 1.35rem; }
.onefont-summary-step { display: grid; grid-template-columns: auto 1fr; gap: 0.8rem; align-items: center; padding: 1rem; border: 1px solid var(--of-line); border-radius: 1rem; background: var(--of-soft); }
.onefont-summary-step:nth-child(2) { border-color: #e8bd8f; background: #fff8ef; }
.dark .onefont-summary-step:nth-child(2) { background: rgba(95, 55, 15, 0.25); }
.onefont-summary-step__number { color: var(--of-navy); font-size: 1.85rem; font-weight: 900; }
.onefont-summary-step:nth-child(2) .onefont-summary-step__number { color: #bd6b1d; }
.onefont-summary-step strong { display: block; color: var(--of-navy); font-size: 1rem; }
.dark .onefont-summary-step strong { color: #a8c7f2; }
.onefont-summary-step span { color: #64748b; font-size: 0.78rem; line-height: 1.4; }
@media (max-width: 900px) {
.onefont-pipeline__body { grid-template-columns: 1fr; }
.onefont-pipeline__header { display: block; }
.onefont-pipeline__header p { margin-top: 0.7rem; text-align: left; }
}
@media (max-width: 700px) { .onefont-pipeline__steps { grid-template-columns: 1fr; } }
&lt;/style>
&lt;h2 id="qualitative-results">Qualitative Results&lt;/h2>
&lt;p>Across text-rich generation tasks, OneFont produces readable text while matching the requested object, composition, and visual style. The comparison includes general image generators and dedicated text rendering models.&lt;/p>
&lt;figure class="onefont-visual onefont-visual--paper">
&lt;div class="onefont-visual__canvas">
&lt;img src="https://liu-yufei.github.io/publication/onefont/onefont-qualitative-results.png" width="792" height="394" loading="lazy" alt="Qualitative comparison of OneFont with AnyText, DALL-E 3, Ideogram, PixArt-alpha, SDXL, and TextDiffuser-2">
&lt;/div>
&lt;figcaption>Qualitative comparison on cakes, T-shirts, book covers, and character images with embedded text. The final column shows OneFont results.&lt;/figcaption>
&lt;/figure></description></item></channel></rss>