Files
2025-12-19 21:47:05 +00:00

8409 lines
143 KiB
HTML

<!DOCTYPE html><html lang="en" class="no-js"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://vegu-ai.github.io/talemate/user-guide/node-editor/reference/template_functions/">
<link rel="prev" href="../events/">
<link rel="next" href="../useful-template-patterns/">
<link rel="icon" href="../../../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>Template Functions - Talemate Documentation</title>
<link rel="stylesheet" href="../../../../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../../../../assets/stylesheets/palette.ab4e12ef.min.css">
<style>:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M1%207.775V2.75C1%201.784%201.784%201%202.75%201h5.025c.464%200%20.91.184%201.238.513l6.25%206.25a1.75%201.75%200%200%201%200%202.474l-5.026%205.026a1.75%201.75%200%200%201-2.474%200l-6.25-6.25A1.75%201.75%200%200%201%201%207.775m1.5%200c0%20.066.026.13.073.177l6.25%206.25a.25.25%200%200%200%20.354%200l5.025-5.025a.25.25%200%200%200%200-.354l-6.25-6.25a.25.25%200%200%200-.177-.073H2.75a.25.25%200%200%200-.25.25ZM6%205a1%201%200%201%201%200%202%201%201%200%200%201%200-2%22/%3E%3C/svg%3E');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M2.5%201.75v11.5c0%20.138.112.25.25.25h3.17a.75.75%200%200%201%200%201.5H2.75A1.75%201.75%200%200%201%201%2013.25V1.75C1%20.784%201.784%200%202.75%200h8.5C12.216%200%2013%20.784%2013%201.75v7.736a.75.75%200%200%201-1.5%200V1.75a.25.25%200%200%200-.25-.25h-8.5a.25.25%200%200%200-.25.25m13.274%209.537zl-4.557%204.45a.75.75%200%200%201-1.055-.008l-1.943-1.95a.75.75%200%200%201%201.062-1.058l1.419%201.425%204.026-3.932a.75.75%200%201%201%201.048%201.074M4.75%204h4.5a.75.75%200%200%201%200%201.5h-4.5a.75.75%200%200%201%200-1.5M4%207.75A.75.75%200%200%201%204.75%207h2a.75.75%200%200%201%200%201.5h-2A.75.75%200%200%201%204%207.75%22/%3E%3C/svg%3E');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M0%208a8%208%200%201%201%2016%200A8%208%200%200%201%200%208m8-6.5a6.5%206.5%200%201%200%200%2013%206.5%206.5%200%200%200%200-13M6.5%207.75A.75.75%200%200%201%207.25%207h1a.75.75%200%200%201%20.75.75v2.75h.25a.75.75%200%200%201%200%201.5h-2a.75.75%200%200%201%200-1.5h.25v-2h-.25a.75.75%200%200%201-.75-.75M8%206a1%201%200%201%201%200-2%201%201%200%200%201%200%202%22/%3E%3C/svg%3E');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M3.499.75a.75.75%200%200%201%201.5%200v.996C5.9%202.903%206.793%203.65%207.662%204.376l.24.202c-.036-.694.055-1.422.426-2.163C9.1.873%2010.794-.045%2012.622.26%2014.408.558%2016%201.94%2016%204.25c0%201.278-.954%202.575-2.44%202.734l.146.508.065.22c.203.701.412%201.455.476%202.226.142%201.707-.4%203.03-1.487%203.898C11.714%2014.671%2010.27%2015%208.75%2015h-6a.75.75%200%200%201%200-1.5h1.376a4.5%204.5%200%200%201-.563-1.191%203.84%203.84%200%200%201-.05-2.063%204.65%204.65%200%200%201-2.025-.293.75.75%200%200%201%20.525-1.406c1.357.507%202.376-.006%202.698-.318l.009-.01a.747.747%200%200%201%201.06%200%20.75.75%200%200%201-.012%201.074c-.912.92-.992%201.835-.768%202.586.221.74.745%201.337%201.196%201.621H8.75c1.343%200%202.398-.296%203.074-.836.635-.507%201.036-1.31.928-2.602-.05-.603-.216-1.224-.422-1.93l-.064-.221c-.12-.407-.246-.84-.353-1.29a2.4%202.4%200%200%201-.507-.441%203.1%203.1%200%200%201-.633-1.248.75.75%200%200%201%201.455-.364c.046.185.144.436.31.627.146.168.353.305.712.305.738%200%201.25-.615%201.25-1.25%200-1.47-.95-2.315-2.123-2.51-1.172-.196-2.227.387-2.706%201.345-.46.92-.27%201.774.019%203.062l.042.19.01.05c.348.443.666.949.94%201.553a.75.75%200%201%201-1.365.62c-.553-1.217-1.32-1.94-2.3-2.768L6.7%205.527c-.814-.68-1.75-1.462-2.692-2.619a3.7%203.7%200%200%200-1.023.88c-.406.495-.663%201.036-.722%201.508.116.122.306.21.591.239.388.038.797-.06%201.032-.19a.75.75%200%200%201%20.728%201.31c-.515.287-1.23.439-1.906.373-.682-.067-1.473-.38-1.879-1.193L.75%205.677V5.5c0-.984.48-1.94%201.077-2.664.46-.559%201.05-1.055%201.673-1.353z%22/%3E%3C/svg%3E');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M13.78%204.22a.75.75%200%200%201%200%201.06l-7.25%207.25a.75.75%200%200%201-1.06%200L2.22%209.28a.75.75%200%200%201%20.018-1.042.75.75%200%200%201%201.042-.018L6%2010.94l6.72-6.72a.75.75%200%200%201%201.06%200%22/%3E%3C/svg%3E');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M0%208a8%208%200%201%201%2016%200A8%208%200%200%201%200%208m8-6.5a6.5%206.5%200%201%200%200%2013%206.5%206.5%200%200%200%200-13M6.92%206.085h.001a.749.749%200%201%201-1.342-.67c.169-.339.436-.701.849-.977C6.845%204.16%207.369%204%208%204a2.76%202.76%200%200%201%201.637.525c.503.377.863.965.863%201.725%200%20.448-.115.83-.329%201.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6%206%200%200%200-.26.16%201%201%200%200%200-.276.245.75.75%200%200%201-1.248-.832c.184-.264.42-.489.692-.661q.154-.1.313-.195l.007-.004c.1-.061.182-.11.258-.161a1%201%200%200%200%20.277-.245C8.96%206.514%209%206.427%209%206.25a.61.61%200%200%200-.262-.525A1.27%201.27%200%200%200%208%205.5c-.369%200-.595.09-.74.187a1%201%200%200%200-.34.398M9%2011a1%201%200%201%201-2%200%201%201%200%200%201%202%200%22/%3E%3C/svg%3E');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M6.457%201.047c.659-1.234%202.427-1.234%203.086%200l6.082%2011.378A1.75%201.75%200%200%201%2014.082%2015H1.918a1.75%201.75%200%200%201-1.543-2.575Zm1.763.707a.25.25%200%200%200-.44%200L1.698%2013.132a.25.25%200%200%200%20.22.368h12.164a.25.25%200%200%200%20.22-.368Zm.53%203.996v2.5a.75.75%200%200%201-1.5%200v-2.5a.75.75%200%200%201%201.5%200M9%2011a1%201%200%201%201-2%200%201%201%200%200%201%202%200%22/%3E%3C/svg%3E');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M2.344%202.343za8%208%200%200%201%2011.314%2011.314A8.002%208.002%200%200%201%20.234%2010.089a8%208%200%200%201%202.11-7.746m1.06%2010.253a6.5%206.5%200%201%200%209.108-9.275%206.5%206.5%200%200%200-9.108%209.275M6.03%204.97%208%206.94l1.97-1.97a.749.749%200%200%201%201.275.326.75.75%200%200%201-.215.734L9.06%208l1.97%201.97a.749.749%200%200%201-.326%201.275.75.75%200%200%201-.734-.215L8%209.06l-1.97%201.97a.749.749%200%200%201-1.275-.326.75.75%200%200%201%20.215-.734L6.94%208%204.97%206.03a.75.75%200%200%201%20.018-1.042.75.75%200%200%201%201.042-.018%22/%3E%3C/svg%3E');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M9.504.43a1.516%201.516%200%200%201%202.437%201.713L10.415%205.5h2.123c1.57%200%202.346%201.909%201.22%203.004l-7.34%207.142a1.25%201.25%200%200%201-.871.354h-.302a1.25%201.25%200%200%201-1.157-1.723L5.633%2010.5H3.462c-1.57%200-2.346-1.909-1.22-3.004zm1.047%201.074L3.286%208.571A.25.25%200%200%200%203.462%209H6.75a.75.75%200%200%201%20.694%201.034l-1.713%204.188%206.982-6.793A.25.25%200%200%200%2012.538%207H9.25a.75.75%200%200%201-.683-1.06l2.008-4.418.003-.006-.004-.009-.006-.006-.008-.001q-.005%200-.009.004%22/%3E%3C/svg%3E');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M4.72.22a.75.75%200%200%201%201.06%200l1%20.999a3.5%203.5%200%200%201%202.441%200l.999-1a.748.748%200%200%201%201.265.332.75.75%200%200%201-.205.729l-.775.776c.616.63.995%201.493.995%202.444v.327q0%20.15-.025.292c.408.14.764.392%201.029.722l1.968-.787a.75.75%200%200%201%20.556%201.392L13%207.258V9h2.25a.75.75%200%200%201%200%201.5H13v.5q-.002.615-.141%201.186l2.17.868a.75.75%200%200%201-.557%201.392l-2.184-.873A5%205%200%200%201%208%2016a5%205%200%200%201-4.288-2.427l-2.183.873a.75.75%200%200%201-.558-1.392l2.17-.868A5%205%200%200%201%203%2011v-.5H.75a.75.75%200%200%201%200-1.5H3V7.258L.971%206.446a.75.75%200%200%201%20.558-1.392l1.967.787c.265-.33.62-.583%201.03-.722a1.7%201.7%200%200%201-.026-.292V4.5c0-.951.38-1.814.995-2.444L4.72%201.28a.75.75%200%200%201%200-1.06m.53%206.28a.75.75%200%200%200-.75.75V11a3.5%203.5%200%201%200%207%200V7.25a.75.75%200%200%200-.75-.75ZM6.173%205h3.654A.17.17%200%200%200%2010%204.827V4.5a2%202%200%201%200-4%200v.327c0%20.096.077.173.173.173%22/%3E%3C/svg%3E');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5%205.782V2.5h-.25a.75.75%200%200%201%200-1.5h6.5a.75.75%200%200%201%200%201.5H11v3.282l3.666%205.76C15.619%2013.04%2014.543%2015%2012.767%2015H3.233c-1.776%200-2.852-1.96-1.899-3.458Zm-2.4%206.565a.75.75%200%200%200%20.633%201.153h9.534a.75.75%200%200%200%20.633-1.153L12.225%2010.5h-8.45ZM9.5%202.5h-3V6c0%20.143-.04.283-.117.403L4.73%209h6.54L9.617%206.403A.75.75%200%200%201%209.5%206Z%22/%3E%3C/svg%3E');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M1.75%202.5h10.5a.75.75%200%200%201%200%201.5H1.75a.75.75%200%200%201%200-1.5m4%205h8.5a.75.75%200%200%201%200%201.5h-8.5a.75.75%200%200%201%200-1.5m0%205h8.5a.75.75%200%200%201%200%201.5h-8.5a.75.75%200%200%201%200-1.5M2.5%207.75v6a.75.75%200%200%201-1.5%200v-6a.75.75%200%200%201%201.5%200%22/%3E%3C/svg%3E');--md-admonition-icon--load:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M14%203v2h3.59l-9.83%209.83%201.41%201.41L19%206.41V10h2V3m-2%2016H5V5h7V3H5a2%202%200%200%200-2%202v14a2%202%200%200%200%202%202h14a2%202%200%200%200%202-2v-7h-2z%22/%3E%3C/svg%3E');--md-admonition-icon--payload:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M19%203H5c-1.1%200-2%20.9-2%202v14c0%201.1.9%202%202%202h14c1.1%200%202-.9%202-2V5c0-1.1-.9-2-2-2M7%207h2v2H7zm0%204h2v2H7zm0%204h2v2H7zm10%202h-6v-2h6zm0-4h-6v-2h6zm0-4h-6V7h6z%22/%3E%3C/svg%3E');--md-admonition-icon--learn-more:url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M12%2021.5c-1.35-.85-3.8-1.5-5.5-1.5-1.65%200-3.35.3-4.75%201.05-.1.05-.15.05-.25.05-.25%200-.5-.25-.5-.5V6c.6-.45%201.25-.75%202-1%201.11-.35%202.33-.5%203.5-.5%201.95%200%204.05.4%205.5%201.5%201.45-1.1%203.55-1.5%205.5-1.5%201.17%200%202.39.15%203.5.5.75.25%201.4.55%202%201v14.6c0%20.25-.25.5-.5.5-.1%200-.15%200-.25-.05-1.4-.75-3.1-1.05-4.75-1.05-1.7%200-4.15.65-5.5%201.5m-1-14c-1.36-.6-3.16-1-4.5-1-1.2%200-2.4.15-3.5.5v11.5c1.1-.35%202.3-.5%203.5-.5%201.34%200%203.14.4%204.5%201zM13%2019c1.36-.6%203.16-1%204.5-1%201.2%200%202.4.15%203.5.5V7c-1.1-.35-2.3-.5-3.5-.5-1.34%200-3.14.4-4.5%201zm1-2.65c.96-.35%202.12-.52%203.5-.52%201.04%200%201.88.08%202.5.24v-1.5a13.9%2013.9%200%200%200-6%20.19zm0-2.66c.96-.35%202.12-.53%203.5-.53%201.04%200%201.88.08%202.5.24v-1.5c-.87-.16-1.71-.23-2.5-.23-1.28%200-2.45.15-3.5.45zM14%2011c.96-.33%202.12-.5%203.5-.5.91%200%201.76.09%202.5.28V9.23c-.87-.15-1.71-.23-2.5-.23-1.32%200-2.5.15-3.5.46z%22/%3E%3C/svg%3E');}</style>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../../../style.css">
<script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<link href="../../../../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../../../../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
</style></head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#template-functions" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../../.." title="Talemate Documentation" class="md-header__button md-logo" aria-label="Talemate Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Talemate Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Template Functions
</span>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../../.." title="Talemate Documentation" class="md-nav__button md-logo" aria-label="Talemate Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
</a>
Talemate Documentation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2">
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Getting started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1">
<label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
<span class="md-ellipsis">
1. Installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_1">
<span class="md-nav__icon md-icon"></span>
1. Installation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../getting-started/installation/windows/" class="md-nav__link">
<span class="md-ellipsis">
Windows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/installation/linux/" class="md-nav__link">
<span class="md-ellipsis">
Linux
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/installation/docker/" class="md-nav__link">
<span class="md-ellipsis">
Docker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/installation/troubleshoot/" class="md-nav__link">
<span class="md-ellipsis">
Common issues
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/connect-a-client/" class="md-nav__link">
<span class="md-ellipsis">
2. Connect a client
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/load-a-scene/" class="md-nav__link">
<span class="md-ellipsis">
3. Load a scene
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4">
<label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
<span class="md-ellipsis">
Advanced
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_4">
<span class="md-nav__icon md-icon"></span>
Advanced
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../getting-started/advanced/change-host-and-port/" class="md-nav__link">
<span class="md-ellipsis">
Changing host and port
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
User guide
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
User guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../character-card-import/" class="md-nav__link">
<span class="md-ellipsis">
Character Card Import
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../interacting/" class="md-nav__link">
<span class="md-ellipsis">
Interacting with the scene
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../restoring-scenes/" class="md-nav__link">
<span class="md-ellipsis">
Restoring Scenes from Backups
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../saving/" class="md-nav__link">
<span class="md-ellipsis">
Saving
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../scenario-tools/" class="md-nav__link">
<span class="md-ellipsis">
Scene Tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../tracking-a-state/" class="md-nav__link">
<span class="md-ellipsis">
Tracked states
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../visual-library/" class="md-nav__link">
<span class="md-ellipsis">
Visual Library
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../voice-library/" class="md-nav__link">
<span class="md-ellipsis">
Voice Library
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-state/" class="md-nav__link">
<span class="md-ellipsis">
World State
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10">
<label class="md-nav__link" for="__nav_3_10" id="__nav_3_10_label" tabindex="0">
<span class="md-ellipsis">
Agents
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10">
<span class="md-nav__icon md-icon"></span>
Agents
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_2">
<label class="md-nav__link" for="__nav_3_10_2" id="__nav_3_10_2_label" tabindex="0">
<span class="md-ellipsis">
Conversation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_2">
<span class="md-nav__icon md-icon"></span>
Conversation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/conversation/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/conversation/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_3">
<label class="md-nav__link" for="__nav_3_10_3" id="__nav_3_10_3_label" tabindex="0">
<span class="md-ellipsis">
Creator
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_3">
<span class="md-nav__icon md-icon"></span>
Creator
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/creator/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/creator/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_4">
<label class="md-nav__link" for="__nav_3_10_4" id="__nav_3_10_4_label" tabindex="0">
<span class="md-ellipsis">
Director
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_4">
<span class="md-nav__icon md-icon"></span>
Director
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/director/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/director/chat/" class="md-nav__link">
<span class="md-ellipsis">
Director Chat
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/director/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_5">
<label class="md-nav__link" for="__nav_3_10_5" id="__nav_3_10_5_label" tabindex="0">
<span class="md-ellipsis">
Editor
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_5">
<span class="md-nav__icon md-icon"></span>
Editor
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/editor/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/editor/revisions/" class="md-nav__link">
<span class="md-ellipsis">
Revisions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/editor/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_6">
<label class="md-nav__link" for="__nav_3_10_6" id="__nav_3_10_6_label" tabindex="0">
<span class="md-ellipsis">
Memory
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_6">
<span class="md-nav__icon md-icon"></span>
Memory
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/memory/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/memory/embeddings/" class="md-nav__link">
<span class="md-ellipsis">
Embeddings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/memory/koboldcpp/" class="md-nav__link">
<span class="md-ellipsis">
KoboldCpp Embeddings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/memory/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/memory/testing/" class="md-nav__link">
<span class="md-ellipsis">
Testing Embeddings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_7">
<label class="md-nav__link" for="__nav_3_10_7" id="__nav_3_10_7_label" tabindex="0">
<span class="md-ellipsis">
Narrator
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_7">
<span class="md-nav__icon md-icon"></span>
Narrator
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/narrator/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/narrator/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_8">
<label class="md-nav__link" for="__nav_3_10_8" id="__nav_3_10_8_label" tabindex="0">
<span class="md-ellipsis">
Summarizer
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_8">
<span class="md-nav__icon md-icon"></span>
Summarizer
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/summarizer/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/summarizer/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_9">
<label class="md-nav__link" for="__nav_3_10_9" id="__nav_3_10_9_label" tabindex="0">
<span class="md-ellipsis">
Visualizer
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_9">
<span class="md-nav__icon md-icon"></span>
Visualizer
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/visualizer/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/visual-library/" class="md-nav__link">
<span class="md-ellipsis">
Visual Library
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_9_4">
<label class="md-nav__link" for="__nav_3_10_9_4" id="__nav_3_10_9_4_label" tabindex="0">
<span class="md-ellipsis">
Backends
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_10_9_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_9_4">
<span class="md-nav__icon md-icon"></span>
Backends
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/visualizer/backends/a1111/" class="md-nav__link">
<span class="md-ellipsis">
AUTOMATIC1111
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/backends/comfyui/" class="md-nav__link">
<span class="md-ellipsis">
ComfyUI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/backends/google/" class="md-nav__link">
<span class="md-ellipsis">
Google
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/backends/openai/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/backends/openrouter/" class="md-nav__link">
<span class="md-ellipsis">
OpenRouter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/visualizer/backends/sdnext/" class="md-nav__link">
<span class="md-ellipsis">
SD.Next
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_10">
<label class="md-nav__link" for="__nav_3_10_10" id="__nav_3_10_10_label" tabindex="0">
<span class="md-ellipsis">
Voice
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_10">
<span class="md-nav__icon md-icon"></span>
Voice
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/voice/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/chatterbox/" class="md-nav__link">
<span class="md-ellipsis">
Chatterbox
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/elevenlabs/" class="md-nav__link">
<span class="md-ellipsis">
ElevenLabs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/f5tts/" class="md-nav__link">
<span class="md-ellipsis">
F5-TTS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/google/" class="md-nav__link">
<span class="md-ellipsis">
Google Gemini-TTS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/kokoro/" class="md-nav__link">
<span class="md-ellipsis">
Kokoro
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/openai/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/troubleshooting/" class="md-nav__link">
<span class="md-ellipsis">
TTS Troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/voice/voice-library/" class="md-nav__link">
<span class="md-ellipsis">
Voice Library
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10_11">
<label class="md-nav__link" for="__nav_3_10_11" id="__nav_3_10_11_label" tabindex="0">
<span class="md-ellipsis">
World state
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_10_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10_11">
<span class="md-nav__icon md-icon"></span>
World state
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../agents/world-state/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../agents/world-state/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_11">
<label class="md-nav__link" for="__nav_3_11" id="__nav_3_11_label" tabindex="0">
<span class="md-ellipsis">
App settings
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_11">
<span class="md-nav__icon md-icon"></span>
App settings
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../app-settings/appearance/" class="md-nav__link">
<span class="md-ellipsis">
Appearance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../app-settings/application/" class="md-nav__link">
<span class="md-ellipsis">
Application
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../app-settings/game/" class="md-nav__link">
<span class="md-ellipsis">
Game
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../app-settings/presets/" class="md-nav__link">
<span class="md-ellipsis">
Presets
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_12">
<label class="md-nav__link" for="__nav_3_12" id="__nav_3_12_label" tabindex="0">
<span class="md-ellipsis">
Clients
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_12">
<span class="md-nav__icon md-icon"></span>
Clients
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../clients/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/prompt-templates/" class="md-nav__link">
<span class="md-ellipsis">
Prompt Templates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/recommended-models/" class="md-nav__link">
<span class="md-ellipsis">
Recommended Local Models
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/presets/" class="md-nav__link">
<span class="md-ellipsis">
Inference Presets
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_12_5">
<label class="md-nav__link" for="__nav_3_12_5" id="__nav_3_12_5_label" tabindex="0">
<span class="md-ellipsis">
Client Types
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_12_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_12_5">
<span class="md-nav__icon md-icon"></span>
Client Types
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../clients/types/anthropic/" class="md-nav__link">
<span class="md-ellipsis">
Anthropic
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/cohere/" class="md-nav__link">
<span class="md-ellipsis">
Cohere
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/google/" class="md-nav__link">
<span class="md-ellipsis">
Google
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/groq/" class="md-nav__link">
<span class="md-ellipsis">
Groq
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/koboldcpp/" class="md-nav__link">
<span class="md-ellipsis">
KoboldCpp
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/lmstudio/" class="md-nav__link">
<span class="md-ellipsis">
LMStudio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/mistral/" class="md-nav__link">
<span class="md-ellipsis">
Mistral.ai
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/openai/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/openai-compatible/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI Compatible
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/ollama/" class="md-nav__link">
<span class="md-ellipsis">
Ollama
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/openrouter/" class="md-nav__link">
<span class="md-ellipsis">
OpenRouter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/tabbyapi/" class="md-nav__link">
<span class="md-ellipsis">
TabbyAPI
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/types/text-generation-webui/" class="md-nav__link">
<span class="md-ellipsis">
Text-Generation-WebUI
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../clients/endpoint-override/" class="md-nav__link">
<span class="md-ellipsis">
Endpoint Override
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/hibernate/" class="md-nav__link">
<span class="md-ellipsis">
Hibernation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/rate-limiting/" class="md-nav__link">
<span class="md-ellipsis">
Rate Limiting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/reasoning/" class="md-nav__link">
<span class="md-ellipsis">
Reasoning Model Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../clients/template-locking/" class="md-nav__link">
<span class="md-ellipsis">
Template Locking
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_13" checked>
<label class="md-nav__link" for="__nav_3_13" id="__nav_3_13_label" tabindex="0">
<span class="md-ellipsis">
Node editor
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_13_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_13">
<span class="md-nav__icon md-icon"></span>
Node editor
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_13_2">
<label class="md-nav__link" for="__nav_3_13_2" id="__nav_3_13_2_label" tabindex="0">
<span class="md-ellipsis">
Core concepts
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_13_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_13_2">
<span class="md-nav__icon md-icon"></span>
Core concepts
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../core-concepts/collector_nodes/" class="md-nav__link">
<span class="md-ellipsis">
Collector Nodes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/command_module/" class="md-nav__link">
<span class="md-ellipsis">
Command Modules
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/error-handling/" class="md-nav__link">
<span class="md-ellipsis">
Error Handling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/events/" class="md-nav__link">
<span class="md-ellipsis">
Events
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/functions/" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/modularity/" class="md-nav__link">
<span class="md-ellipsis">
Modularity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/module-inheritance/" class="md-nav__link">
<span class="md-ellipsis">
Module Inheritance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/package/" class="md-nav__link">
<span class="md-ellipsis">
Installable Packages
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/prompt-templates/" class="md-nav__link">
<span class="md-ellipsis">
Prompt Templates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/prompt_building/" class="md-nav__link">
<span class="md-ellipsis">
Prompt Building
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/staging/" class="md-nav__link">
<span class="md-ellipsis">
Staging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/states/" class="md-nav__link">
<span class="md-ellipsis">
State Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/switches/" class="md-nav__link">
<span class="md-ellipsis">
Switches and conditional routing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-concepts/user-interface/" class="md-nav__link">
<span class="md-ellipsis">
Using the node editor
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_13_3" checked>
<label class="md-nav__link" for="__nav_3_13_3" id="__nav_3_13_3_label" tabindex="0">
<span class="md-ellipsis">
Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_13_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_13_3">
<span class="md-nav__icon md-icon"></span>
Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../events/" class="md-nav__link">
<span class="md-ellipsis">
Events
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Template Functions
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Template Functions
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#function-index" class="md-nav__link">
<span class="md-ellipsis">
Function Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#filter-index" class="md-nav__link">
<span class="md-ellipsis">
Filter Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#functions" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#set_prepared_response" class="md-nav__link">
<span class="md-ellipsis">
set_prepared_response
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#set_data_response" class="md-nav__link">
<span class="md-ellipsis">
set_data_response
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#disable_dedupe" class="md-nav__link">
<span class="md-ellipsis">
disable_dedupe
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_scene" class="md-nav__link">
<span class="md-ellipsis">
query_scene
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_memory" class="md-nav__link">
<span class="md-ellipsis">
query_memory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_text" class="md-nav__link">
<span class="md-ellipsis">
query_text
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_text_eval" class="md-nav__link">
<span class="md-ellipsis">
query_text_eval
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#instruct_text" class="md-nav__link">
<span class="md-ellipsis">
instruct_text
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#agent_action" class="md-nav__link">
<span class="md-ellipsis">
agent_action
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#agent_config" class="md-nav__link">
<span class="md-ellipsis">
agent_config
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time_diff" class="md-nav__link">
<span class="md-ellipsis">
time_diff
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#text_to_chunks" class="md-nav__link">
<span class="md-ellipsis">
text_to_chunks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#to_int" class="md-nav__link">
<span class="md-ellipsis">
to_int
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#to_str" class="md-nav__link">
<span class="md-ellipsis">
to_str
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#len" class="md-nav__link">
<span class="md-ellipsis">
len
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#max" class="md-nav__link">
<span class="md-ellipsis">
max
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#min" class="md-nav__link">
<span class="md-ellipsis">
min
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#join" class="md-nav__link">
<span class="md-ellipsis">
join
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#data_format_type" class="md-nav__link">
<span class="md-ellipsis">
data_format_type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#count_tokens" class="md-nav__link">
<span class="md-ellipsis">
count_tokens
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#llm_can_be_coerced" class="md-nav__link">
<span class="md-ellipsis">
llm_can_be_coerced
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#config" class="md-nav__link">
<span class="md-ellipsis">
config
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#filters" class="md-nav__link">
<span class="md-ellipsis">
Filters
</span>
</a>
<nav class="md-nav" aria-label="Filters">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#condensed" class="md-nav__link">
<span class="md-ellipsis">
condensed
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../useful-template-patterns/" class="md-nav__link">
<span class="md-ellipsis">
Template Pattern Cheat Sheet
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_14">
<label class="md-nav__link" for="__nav_3_14" id="__nav_3_14_label" tabindex="0">
<span class="md-ellipsis">
World editor
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_14">
<span class="md-nav__icon md-icon"></span>
World editor
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../world-editor/context-db/" class="md-nav__link">
<span class="md-ellipsis">
Context DB
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/generation-settings/" class="md-nav__link">
<span class="md-ellipsis">
Generation Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/history/" class="md-nav__link">
<span class="md-ellipsis">
History
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/pins/" class="md-nav__link">
<span class="md-ellipsis">
Pins
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/suggestions/" class="md-nav__link">
<span class="md-ellipsis">
Suggestions
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_14_6">
<label class="md-nav__link" for="__nav_3_14_6" id="__nav_3_14_6_label" tabindex="0">
<span class="md-ellipsis">
Characters
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_14_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_14_6">
<span class="md-nav__icon md-icon"></span>
Characters
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../world-editor/characters/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/deactivate/" class="md-nav__link">
<span class="md-ellipsis">
Activate / Deactivate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/actor/" class="md-nav__link">
<span class="md-ellipsis">
Actor management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/attributes/" class="md-nav__link">
<span class="md-ellipsis">
Attributes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/create/" class="md-nav__link">
<span class="md-ellipsis">
Create new character
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/delete/" class="md-nav__link">
<span class="md-ellipsis">
Delete a character
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/description/" class="md-nav__link">
<span class="md-ellipsis">
Description
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/details/" class="md-nav__link">
<span class="md-ellipsis">
Details
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/import/" class="md-nav__link">
<span class="md-ellipsis">
Import a character
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/characters/states/" class="md-nav__link">
<span class="md-ellipsis">
Tracked states
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_14_7">
<label class="md-nav__link" for="__nav_3_14_7" id="__nav_3_14_7_label" tabindex="0">
<span class="md-ellipsis">
Scene
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_14_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_14_7">
<span class="md-nav__icon md-icon"></span>
Scene
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../world-editor/scene/outline/" class="md-nav__link">
<span class="md-ellipsis">
Outline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/scene/direction/" class="md-nav__link">
<span class="md-ellipsis">
Direction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/scene/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/scene/shared-context/" class="md-nav__link">
<span class="md-ellipsis">
Shared World
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/scene/export/" class="md-nav__link">
<span class="md-ellipsis">
Export
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_14_8">
<label class="md-nav__link" for="__nav_3_14_8" id="__nav_3_14_8_label" tabindex="0">
<span class="md-ellipsis">
Templates
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_14_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_14_8">
<span class="md-nav__icon md-icon"></span>
Templates
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../world-editor/templates/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/attribute/" class="md-nav__link">
<span class="md-ellipsis">
Character Attribute
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/detail/" class="md-nav__link">
<span class="md-ellipsis">
Character Detail
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/groups/" class="md-nav__link">
<span class="md-ellipsis">
Groups
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/scene_type/" class="md-nav__link">
<span class="md-ellipsis">
Scene Types
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/spice/" class="md-nav__link">
<span class="md-ellipsis">
Spice Collection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/state/" class="md-nav__link">
<span class="md-ellipsis">
State Reinforcement
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../world-editor/templates/writing-style/" class="md-nav__link">
<span class="md-ellipsis">
Writing Styles
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_14_9">
<label class="md-nav__link" for="__nav_3_14_9" id="__nav_3_14_9_label" tabindex="0">
<span class="md-ellipsis">
World
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_14_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_14_9">
<span class="md-nav__icon md-icon"></span>
World
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../world-editor/world/states/" class="md-nav__link">
<span class="md-ellipsis">
Tracked states
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_15">
<label class="md-nav__link" for="__nav_3_15" id="__nav_3_15_label" tabindex="0">
<span class="md-ellipsis">
Tutorials
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_15">
<span class="md-nav__icon md-icon"></span>
Tutorials
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_15_1">
<label class="md-nav__link" for="__nav_3_15_1" id="__nav_3_15_1_label" tabindex="0">
<span class="md-ellipsis">
Creating a basic scene
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_15_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_15_1">
<span class="md-nav__icon md-icon"></span>
Creating a basic scene
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../howto/create-a-new-scene/create-empty-scene/" class="md-nav__link">
<span class="md-ellipsis">
1. An empty scene
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/create-a-new-scene/create-player-character/" class="md-nav__link">
<span class="md-ellipsis">
2. Add a player character
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/create-a-new-scene/create-npc/" class="md-nav__link">
<span class="md-ellipsis">
3. Add an AI character
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/create-a-new-scene/test/" class="md-nav__link">
<span class="md-ellipsis">
4. Test your scene
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_15_2">
<label class="md-nav__link" for="__nav_3_15_2" id="__nav_3_15_2_label" tabindex="0">
<span class="md-ellipsis">
Dynamic storylines
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_15_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_15_2">
<span class="md-nav__icon md-icon"></span>
Dynamic storylines
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../howto/use-dynamic-story-module/" class="md-nav__link">
<span class="md-ellipsis">
Tutorial
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_15_3">
<label class="md-nav__link" for="__nav_3_15_3" id="__nav_3_15_3_label" tabindex="0">
<span class="md-ellipsis">
Node Editor - Crash Course
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_15_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_15_3">
<span class="md-nav__icon md-icon"></span>
Node Editor - Crash Course
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/1-create-the-scene-project/" class="md-nav__link">
<span class="md-ellipsis">
1 - Scene Project
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/2-initial-nodes/" class="md-nav__link">
<span class="md-ellipsis">
2 - Initial Nodes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/3-improvements/" class="md-nav__link">
<span class="md-ellipsis">
3 - Improvements
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/4-get-organized/" class="md-nav__link">
<span class="md-ellipsis">
4 - Get organized
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/5-agentic-workflow/" class="md-nav__link">
<span class="md-ellipsis">
5 - Agentic Flow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/6-reusable-module/" class="md-nav__link">
<span class="md-ellipsis">
6 - Reusable Module
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../howto/infinity-quest-dynamic/7-polish/" class="md-nav__link">
<span class="md-ellipsis">
7 - Polish
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_16">
<label class="md-nav__link" for="__nav_3_16" id="__nav_3_16_label" tabindex="0">
<span class="md-ellipsis">
Third Party APIs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_16">
<span class="md-nav__icon md-icon"></span>
Third Party APIs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../apis/anthropic/" class="md-nav__link">
<span class="md-ellipsis">
Anthropic
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/cohere/" class="md-nav__link">
<span class="md-ellipsis">
Cohere
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/elevenlabs/" class="md-nav__link">
<span class="md-ellipsis">
ElevenLabs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/google/" class="md-nav__link">
<span class="md-ellipsis">
Google Cloud
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/groq/" class="md-nav__link">
<span class="md-ellipsis">
Groq
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/mistral/" class="md-nav__link">
<span class="md-ellipsis">
Mistral.ai
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/openrouter/" class="md-nav__link">
<span class="md-ellipsis">
OpenRouter
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/openai/" class="md-nav__link">
<span class="md-ellipsis">
OpenAI
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_17">
<label class="md-nav__link" for="__nav_3_17" id="__nav_3_17_label" tabindex="0">
<span class="md-ellipsis">
Third Party Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_17">
<span class="md-nav__icon md-icon"></span>
Third Party Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../integrations/runpod/" class="md-nav__link">
<span class="md-ellipsis">
Runpod
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Developer guide
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Developer guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../dev/" class="md-nav__link">
<span class="md-ellipsis">
Coming soon
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../../dev/templates/" class="md-nav__link">
<span class="md-ellipsis">
Template Overrides
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../../dev/third-party-reference/" class="md-nav__link">
<span class="md-ellipsis">
Third party reference
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_4">
<label class="md-nav__link" for="__nav_4_4" id="__nav_4_4_label" tabindex="0">
<span class="md-ellipsis">
Howto
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_4">
<span class="md-nav__icon md-icon"></span>
Howto
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../dev/howto/add-a-worldstate-template-type/" class="md-nav__link">
<span class="md-ellipsis">
Adding a new world-state template
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#function-index" class="md-nav__link">
<span class="md-ellipsis">
Function Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#filter-index" class="md-nav__link">
<span class="md-ellipsis">
Filter Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#functions" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#set_prepared_response" class="md-nav__link">
<span class="md-ellipsis">
set_prepared_response
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#set_data_response" class="md-nav__link">
<span class="md-ellipsis">
set_data_response
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#disable_dedupe" class="md-nav__link">
<span class="md-ellipsis">
disable_dedupe
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_scene" class="md-nav__link">
<span class="md-ellipsis">
query_scene
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_memory" class="md-nav__link">
<span class="md-ellipsis">
query_memory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_text" class="md-nav__link">
<span class="md-ellipsis">
query_text
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#query_text_eval" class="md-nav__link">
<span class="md-ellipsis">
query_text_eval
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#instruct_text" class="md-nav__link">
<span class="md-ellipsis">
instruct_text
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#agent_action" class="md-nav__link">
<span class="md-ellipsis">
agent_action
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#agent_config" class="md-nav__link">
<span class="md-ellipsis">
agent_config
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time_diff" class="md-nav__link">
<span class="md-ellipsis">
time_diff
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#text_to_chunks" class="md-nav__link">
<span class="md-ellipsis">
text_to_chunks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#to_int" class="md-nav__link">
<span class="md-ellipsis">
to_int
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#to_str" class="md-nav__link">
<span class="md-ellipsis">
to_str
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#len" class="md-nav__link">
<span class="md-ellipsis">
len
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#max" class="md-nav__link">
<span class="md-ellipsis">
max
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#min" class="md-nav__link">
<span class="md-ellipsis">
min
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#join" class="md-nav__link">
<span class="md-ellipsis">
join
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#data_format_type" class="md-nav__link">
<span class="md-ellipsis">
data_format_type
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#count_tokens" class="md-nav__link">
<span class="md-ellipsis">
count_tokens
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#llm_can_be_coerced" class="md-nav__link">
<span class="md-ellipsis">
llm_can_be_coerced
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#config" class="md-nav__link">
<span class="md-ellipsis">
config
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#filters" class="md-nav__link">
<span class="md-ellipsis">
Filters
</span>
</a>
<nav class="md-nav" aria-label="Filters">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#condensed" class="md-nav__link">
<span class="md-ellipsis">
condensed
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="template-functions">Template Functions</h1>
<p>List of functions available in prompt templates.</p>
<h2 id="function-index">Function Index</h2>
<table>
<thead>
<tr>
<th>Function</th>
<th>Category</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#set_prepared_response"><code>set_prepared_response</code></a></td>
<td>Response Control</td>
</tr>
<tr>
<td><a href="#set_data_response"><code>set_data_response</code></a></td>
<td>Response Control</td>
</tr>
<tr>
<td><a href="#disable_dedupe"><code>disable_dedupe</code></a></td>
<td>Response Control</td>
</tr>
<tr>
<td><a href="#query_scene"><code>query_scene</code></a></td>
<td>Scene Queries</td>
</tr>
<tr>
<td><a href="#query_memory"><code>query_memory</code></a></td>
<td>Memory Queries</td>
</tr>
<tr>
<td><a href="#query_text"><code>query_text</code></a></td>
<td>Text Analysis</td>
</tr>
<tr>
<td><a href="#query_text_eval"><code>query_text_eval</code></a></td>
<td>Text Analysis</td>
</tr>
<tr>
<td><a href="#instruct_text"><code>instruct_text</code></a></td>
<td>Text Analysis</td>
</tr>
<tr>
<td><a href="#agent_action"><code>agent_action</code></a></td>
<td>Agent Operations</td>
</tr>
<tr>
<td><a href="#agent_config"><code>agent_config</code></a></td>
<td>Agent Operations</td>
</tr>
<tr>
<td><a href="#time_diff"><code>time_diff</code></a></td>
<td>Time Operations</td>
</tr>
<tr>
<td><a href="#text_to_chunks"><code>text_to_chunks</code></a></td>
<td>Text Processing</td>
</tr>
<tr>
<td><a href="#to_int"><code>to_int</code></a></td>
<td>Type Conversion</td>
</tr>
<tr>
<td><a href="#to_str"><code>to_str</code></a></td>
<td>Type Conversion</td>
</tr>
<tr>
<td><a href="#len"><code>len</code></a></td>
<td>Utility Functions</td>
</tr>
<tr>
<td><a href="#max"><code>max</code></a></td>
<td>Utility Functions</td>
</tr>
<tr>
<td><a href="#min"><code>min</code></a></td>
<td>Utility Functions</td>
</tr>
<tr>
<td><a href="#join"><code>join</code></a></td>
<td>String Operations</td>
</tr>
<tr>
<td><a href="#data_format_type"><code>data_format_type</code></a></td>
<td>Data Formatting</td>
</tr>
<tr>
<td><a href="#count_tokens"><code>count_tokens</code></a></td>
<td>Token Operations</td>
</tr>
<tr>
<td><a href="#llm_can_be_coerced"><code>llm_can_be_coerced</code></a></td>
<td>LLM Operations</td>
</tr>
<tr>
<td><a href="#config"><code>config</code></a></td>
<td>Configuration</td>
</tr>
</tbody>
</table>
<h2 id="filter-index">Filter Index</h2>
<table>
<thead>
<tr>
<th>Filter</th>
<th>Category</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#condensed"><code>condensed</code></a></td>
<td>Text Formatting</td>
</tr>
</tbody>
</table>
<h2 id="functions">Functions</h2>
<h3 id="set_prepared_response">set_prepared_response</h3>
<p>Can be used to scaffold the beginning of the agent response while making sure that the string provided will still be part of the response.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>response</code></td>
<td>str</td>
<td>The string to prepend to the agent response.</td>
</tr>
<tr>
<td><code>prepend</code></td>
<td>str</td>
<td>Additional string to prepend to the agent response. (will be lost from the response)</td>
</tr>
</tbody>
</table>
</div>
<div class="highlight"><pre><span></span><code>&lt;|SECTION:TASK|&gt;
Count to 10.
&lt;|CLOSE_SECTION|&gt;
{{ set_prepared_response("1 2 3 4") }}
</code></pre></div>
<p>Will result in the following response:</p>
<div class="highlight"><pre><span></span><code>1 2 3 4 5 6 7 8 9 10 followed by whatever else the agent is going to hallucinate today.
</code></pre></div>
<hr>
<div class="highlight"><pre><span></span><code>&lt;|SECTION:TASK|&gt;
Count to 10.
&lt;|CLOSE_SECTION|&gt;
{{ set_prepared_response("2 3 4", prepend="1 ") }}
</code></pre></div>
<p>Will result in the following response:</p>
<div class="highlight"><pre><span></span><code>2 3 4 5 6 7 8 9 10 followed by whatever else the agent is going to hallucinate today.
</code></pre></div>
<h3 id="set_data_response">set_data_response</h3>
<p>Scaffolds a data structure (JSON or YAML) for the agent to complete. The function partially serializes the provided object, allowing the agent to continue and complete the structure. Format is automatically determined by the client's preferred data format.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>initial_object</code></td>
<td>dict</td>
<td>The data structure to partially serialize</td>
</tr>
<tr>
<td><code>instruction</code></td>
<td>str</td>
<td>Optional instruction/schema comment (default: "")</td>
</tr>
<tr>
<td><code>cutoff</code></td>
<td>int</td>
<td>Number of lines to trim from the end of serialization (default: 3)</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition example">
<p class="admonition-title">Example: JSON Format</p>
<div class="highlight"><pre><span></span><code>&lt;|SECTION:TASK|&gt;
Generate character attributes for a fantasy RPG character.
I want the following attributes:
- name
- class
- level
- attributes
- strength
- dexterity
- intelligence
- wisdom
- constitution
- charisma
&lt;|CLOSE_SECTION|&gt;
{{ set_data_response({
"name": ""
}, instruction="Generate a complete character sheet") }}
</code></pre></div>
<p>Will scaffold the response as:</p>
<div class="highlight"><pre><span></span><code><span class="c1">// Generate a complete character sheet</span>
<span class="p">{</span><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span>
</code></pre></div>
<p>And the agent might complete it as:</p>
<div class="highlight"><pre><span></span><code><span class="c1">// Generate a complete character sheet</span>
<span class="p">{</span><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Thorin Ironforge"</span><span class="p">,</span><span class="w"> </span><span class="nt">"class"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Warrior"</span><span class="p">,</span><span class="w"> </span><span class="nt">"level"</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="nt">"attributes"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">"strength"</span><span class="p">:</span><span class="w"> </span><span class="mi">18</span><span class="p">,</span><span class="w"> </span><span class="nt">"dexterity"</span><span class="p">:</span><span class="w"> </span><span class="mi">12</span><span class="p">,</span><span class="w"> </span><span class="nt">"intelligence"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="nt">"wisdom"</span><span class="p">:</span><span class="w"> </span><span class="mi">14</span><span class="p">,</span><span class="w"> </span><span class="nt">"constitution"</span><span class="p">:</span><span class="w"> </span><span class="mi">16</span><span class="p">,</span><span class="w"> </span><span class="nt">"charisma"</span><span class="p">:</span><span class="w"> </span><span class="mi">8</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span>
</code></pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Format Selection</p>
<p>The data format (JSON or YAML) is automatically determined by:</p>
<ol>
<li>The client's <code>data_format</code> attribute if available</li>
<li>Otherwise defaults to the format specified in <code>data_format_type</code> (default: "json")</li>
</ol>
</div>
<div class="admonition tip">
<p class="admonition-title">Minimal Scaffolding</p>
<p>Provide minimal structure to give the agent maximum flexibility. The function automatically trims the serialization to create an incomplete structure that the agent must complete:</p>
<div class="highlight"><pre><span></span><code>{{ set_data_response({
"items": []
}) }}
</code></pre></div>
<p>Results in (JSON):
</p><div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"> </span><span class="nt">"items"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
</code></pre></div><p></p>
<p>This allows the agent to generate the entire array contents and any additional properties.</p>
</div>
<hr>
<h3 id="disable_dedupe">disable_dedupe</h3>
<p>Disables deduplication for the prompt text. By default, Talemate removes duplicate lines from prompts to save tokens. This function prevents that behavior for the current prompt.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<p>This function takes no arguments.</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code>{{ disable_dedupe() }}
&lt;|SECTION:EXAMPLES|&gt;
The cat sat on the mat.
The cat sat on the mat.
The cat sat on the mat.
&lt;|CLOSE_SECTION|&gt;
</code></pre></div>
<p>Without <code>disable_dedupe()</code>, duplicate lines would be removed. With it, all three identical lines are preserved.</p>
</div>
<hr>
<h3 id="query_scene">query_scene</h3>
<p>Queries the narrator agent to answer questions about the current scene. This function is useful for extracting specific information or generating context-aware content based on the scene state.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>query</code></td>
<td>str</td>
<td>The question to ask about the scene. Supports template variables.</td>
</tr>
<tr>
<td><code>at_the_end</code></td>
<td>bool</td>
<td>Whether to append context at the end (default: True)</td>
</tr>
<tr>
<td><code>as_narrative</code></td>
<td>bool</td>
<td>Whether to format as narrative text (default: False)</td>
</tr>
<tr>
<td><code>as_question_answer</code></td>
<td>bool</td>
<td>Whether to format as Q&amp;A pair (default: True)</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Basic Query</p>
<div class="highlight"><pre><span></span><code>{{ query_scene("What is the current weather?") }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>Question: What is the current weather?
Answer: The sky is overcast with dark storm clouds gathering on the horizon. A cold wind blows through the trees.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: With Template Variables</p>
<div class="highlight"><pre><span></span><code>{{ query_scene("What is {character.name} currently doing?") }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>Question: What is Alice currently doing?
Answer: Alice is sitting by the fireplace, reading an old leather-bound book.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Narrative Format</p>
<div class="highlight"><pre><span></span><code>{{ query_scene("Describe the atmosphere in the room", as_narrative=true, as_question_answer=false) }}
</code></pre></div>
<p>Returns just the answer without Q&amp;A formatting:
</p><div class="highlight"><pre><span></span><code>The room is dimly lit by flickering candles, casting dancing shadows on the walls. A sense of unease permeates the air.
</code></pre></div><p></p>
</div>
<hr>
<h3 id="query_memory">query_memory</h3>
<p>Queries the memory agent to retrieve stored information about characters, events, or world state. Useful for maintaining consistency and recalling past events.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>query</code></td>
<td>str</td>
<td>The question to ask. Supports template variables.</td>
</tr>
<tr>
<td><code>as_question_answer</code></td>
<td>bool</td>
<td>Whether to format as Q&amp;A pair (default: True)</td>
</tr>
<tr>
<td><code>**kwargs</code></td>
<td>dict</td>
<td>Additional arguments passed to the memory agent</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Basic Memory Query</p>
<div class="highlight"><pre><span></span><code>{{ query_memory("What do we know about the ancient artifact?") }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>Question: What do we know about the ancient artifact?
Answer: The artifact is a golden amulet discovered in the ruins. It bears strange inscriptions and glows faintly in moonlight.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Multi-Query with Iteration</p>
<div class="highlight"><pre><span></span><code>{{ query_memory("What is Alice's favorite color?\nWhat is Bob's occupation?\nWhere did they first meet?", iterate=true) }}
</code></pre></div>
<p>Returns concatenated answers for multiple queries.</p>
</div>
<hr>
<h3 id="query_text">query_text</h3>
<p>Analyzes provided text and answers questions about it. Uses the world state agent's text analysis capabilities.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>query</code></td>
<td>str</td>
<td>The question to ask about the text</td>
</tr>
<tr>
<td><code>text</code></td>
<td>str or list</td>
<td>The text to analyze (list will be joined with newlines)</td>
</tr>
<tr>
<td><code>as_question_answer</code></td>
<td>bool</td>
<td>Whether to format as Q&amp;A pair (default: True)</td>
</tr>
<tr>
<td><code>short</code></td>
<td>bool</td>
<td>Whether to limit response to ~10 tokens (default: False)</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Analyzing Text</p>
<div class="highlight"><pre><span></span><code>{% set description = "The old mansion stood atop the hill, its broken windows staring like hollow eyes. Vines crept up the crumbling walls." %}
{{ query_text("What condition is the building in?", description) }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>Question: What condition is the building in?
Answer: The building is in a state of severe disrepair and abandonment, with broken windows and crumbling walls overtaken by vegetation.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Short Answer</p>
<div class="highlight"><pre><span></span><code>{{ query_text("Is this a modern building?", description, short=true, as_question_answer=false) }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>No, it's old and abandoned.
</code></pre></div><p></p>
</div>
<hr>
<h3 id="query_text_eval">query_text_eval</h3>
<p>Evaluates a yes/no question about provided text. Returns a boolean value based on the text analysis.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>query</code></td>
<td>str</td>
<td>The yes/no question to evaluate</td>
</tr>
<tr>
<td><code>text</code></td>
<td>str</td>
<td>The text to analyze</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p><code>bool</code> - True if the answer starts with "yes", False otherwise</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Boolean Evaluation</p>
<div class="highlight"><pre><span></span><code>{% set scene_text = "The room was pitch black. Sarah couldn't see anything." %}
{% if query_text_eval("Is the room dark?", scene_text) %}
Sarah fumbles for a light switch.
{% else %}
Sarah surveys the well-lit room.
{% endif %}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Character State Check</p>
<div class="highlight"><pre><span></span><code>{% if query_text_eval("Is the character injured?", history[-1].text) %}
{{ character.name }} winces in pain with each movement.
{% endif %}
</code></pre></div>
</div>
<hr>
<h3 id="instruct_text">instruct_text</h3>
<p>Analyzes text and follows specific instructions about it using the world state agent. This is useful for extracting, transforming, or generating content based on provided text.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>instruction</code></td>
<td>str</td>
<td>The instruction to follow. Supports template variables.</td>
</tr>
<tr>
<td><code>text</code></td>
<td>str or list</td>
<td>The text to analyze (list will be joined with newlines)</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Summarizing Text</p>
<div class="highlight"><pre><span></span><code>{% set long_description = "The ancient castle stood majestically on the cliff, its weathered stone walls telling stories of centuries past. Moss covered the northern tower, while the eastern wing showed signs of recent repairs. The courtyard bustled with activity as merchants set up their stalls for the morning market." %}
{{ instruct_text("Summarize this in one sentence", long_description) }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>An ancient castle on a cliff hosts a busy morning market in its courtyard.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Extracting Information</p>
<div class="highlight"><pre><span></span><code>{% set character_intro = "My name is Elena Blackwood. I'm 28 years old and work as a detective in the city. I have dark hair and green eyes." %}
{{ instruct_text("Extract only the physical description", character_intro) }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>Dark hair and green eyes.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Transforming Style</p>
<div class="highlight"><pre><span></span><code>{{ instruct_text("Rewrite this in a more ominous tone", "The sun was setting over the quiet village.") }}
</code></pre></div>
<p>Returns:
</p><div class="highlight"><pre><span></span><code>Shadows lengthened as the dying sun bled crimson over the unnaturally silent village.
</code></pre></div><p></p>
</div>
<hr>
<h3 id="agent_action">agent_action</h3>
<p>Executes a specific action on any agent and returns the result. This provides direct access to agent capabilities from within templates.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>agent_name</code></td>
<td>str</td>
<td>The name of the agent (e.g., "narrator", "world_state")</td>
</tr>
<tr>
<td><code>_action_name</code></td>
<td>str</td>
<td>The method name to call on the agent</td>
</tr>
<tr>
<td><code>**kwargs</code></td>
<td>dict</td>
<td>Additional keyword arguments passed to the action</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Calling Narrator Action</p>
<div class="highlight"><pre><span></span><code>{{ agent_action("narrator", "narrate_query", query="What time of day is it?") }}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: World State Analysis</p>
<div class="highlight"><pre><span></span><code>{{ agent_action("world_state", "analyze_text", text="The room was cold and damp.", instruction="What can we infer about this location?") }}
</code></pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Advanced Feature</p>
<p>This function provides low-level access to agent methods. Use with caution and ensure you understand the agent's API before calling its methods directly.</p>
</div>
<hr>
<h3 id="agent_config">agent_config</h3>
<p>Retrieves configuration values from agent actions. Useful for accessing agent-specific settings within templates.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>config_path</code></td>
<td>str</td>
<td>Path to config in format: "agent_name.action_name.config_name"</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The configuration value, or an empty string if the path is invalid.</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Getting Configuration Value</p>
<div class="highlight"><pre><span></span><code>{% set response_length = agent_config("conversation.generation_override.length") %}
{% if response_length &gt; 500 %}
&lt;|SECTION:INSTRUCTIONS|&gt;
Generate a detailed response.
&lt;|CLOSE_SECTION|&gt;
{% else %}
&lt;|SECTION:INSTRUCTIONS|&gt;
Keep your response concise.
&lt;|CLOSE_SECTION|&gt;
{% endif %}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Checking Feature Status</p>
<div class="highlight"><pre><span></span><code>{% if agent_config("narrator.narrate.allow_dialogue") == "true" %}
You may include character dialogue in your narration.
{% endif %}
</code></pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Configuration Path</p>
<p>The path follows the pattern <code>agent_name.action_name.config_name</code>. If any part of the path is invalid, an empty string is returned.</p>
</div>
<hr>
<h3 id="time_diff">time_diff</h3>
<p>Converts an ISO8601 timestamp to a human-readable time difference relative to the current scene time.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>iso8601_time</code></td>
<td>str</td>
<td>ISO8601 formatted timestamp</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>A human-readable string describing the time difference (e.g., "2 hours ago", "in 3 days")</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Time Since Event</p>
<div class="highlight"><pre><span></span><code>{% if last_seen_timestamp %}
{{ character.name }} was last seen {{ time_diff(last_seen_timestamp) }}.
{% endif %}
</code></pre></div>
<p>Might produce:
</p><div class="highlight"><pre><span></span><code>Alice was last seen 3 hours ago.
</code></pre></div><p></p>
<p><strong>Note:</strong> <code>last_seen_timestamp</code> is not a real variable, it's just an example of how to use the function. Talemate uses iso8601 timestamps to timestamp messages and keep track of scene time.</p>
<p>Historic events entered into long term memory will also have explicit timestamps.</p>
</div>
<hr>
<h3 id="text_to_chunks">text_to_chunks</h3>
<p>Splits text into chunks of approximately equal size, useful for processing long texts in manageable pieces.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>text</code></td>
<td>str</td>
<td>The text to split into chunks</td>
</tr>
<tr>
<td><code>chunk_size</code></td>
<td>int</td>
<td>Target size for each chunk in characters (default: 512)</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>A list of text chunks, each approximately <code>chunk_size</code> characters</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Processing Long Text</p>
<div class="highlight"><pre><span></span><code>{% set long_text = scene.get_history_text() %}
{% set chunks = text_to_chunks(long_text, 1000) %}
&lt;|SECTION:SCENE HISTORY|&gt;
{% for chunk in chunks[:3] %}
Part {{ loop.index }}:
{{ chunk }}
{% endfor %}
{% if chunks|length &gt; 3 %}
... ({{ chunks|length - 3 }} more parts)
{% endif %}
&lt;|CLOSE_SECTION|&gt;
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Iterating Through Chunks</p>
<div class="highlight"><pre><span></span><code>{% for chunk in text_to_chunks(document, 256) %}
{{ query_text("Summarize the main point", chunk) }}
{% endfor %}
</code></pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Chunk Boundaries</p>
<p>The function respects line breaks and attempts to avoid splitting in the middle of sentences when possible.</p>
</div>
<hr>
<h3 id="to_int">to_int</h3>
<p>Converts a value to an integer. Useful for type conversion in template logic.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x</code></td>
<td>any</td>
<td>The value to convert to integer</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The integer representation of the value</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: String to Integer</p>
<div class="highlight"><pre><span></span><code>{% set level_string = "5" %}
{% set level = to_int(level_string) %}
{% if level &gt; 3 %}
This is a high-level character.
{% endif %}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Numeric Comparisons</p>
<div class="highlight"><pre><span></span><code>{% set health_percent = to_int(character.health) / to_int(character.max_health) * 100 %}
Character health: {{ to_int(health_percent) }}%
</code></pre></div>
</div>
<hr>
<h3 id="to_str">to_str</h3>
<p>Converts a value to a string. Useful for string operations on numeric or other types.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x</code></td>
<td>any</td>
<td>The value to convert to string</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The string representation of the value</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Number to String</p>
<div class="highlight"><pre><span></span><code>{% set count = 42 %}
{% set message = "There are " + to_str(count) + " items" %}
{{ message }}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Building Dynamic Text</p>
<div class="highlight"><pre><span></span><code>{% set level = 10 %}
{% set class = "Warrior" %}
{{ character.name }} is a level {{ to_str(level) }} {{ class }}.
</code></pre></div>
</div>
<div class="admonition tip">
<p class="admonition-title">String Concatenation</p>
<p>Use <code>to_str()</code> when concatenating non-string values to avoid type errors in template expressions.</p>
</div>
<hr>
<h3 id="len">len</h3>
<p>Returns the length of a collection (string, list, dictionary, etc.).</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x</code></td>
<td>collection</td>
<td>The collection to measure</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The number of items in the collection</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: String Length</p>
<div class="highlight"><pre><span></span><code>{% if len(character.name) &gt; 20 %}
&lt;|SECTION:NOTE|&gt;
Character has a very long name, use shortened version when possible.
&lt;|CLOSE_SECTION|&gt;
{% endif %}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: List Length</p>
<div class="highlight"><pre><span></span><code>{% set items = ["sword", "shield", "potion"] %}
{{ character.name }} is carrying {{ len(items) }} items.
</code></pre></div>
</div>
<hr>
<h3 id="max">max</h3>
<p>Returns the larger of two values.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x</code></td>
<td>any</td>
<td>First value to compare</td>
</tr>
<tr>
<td><code>y</code></td>
<td>any</td>
<td>Second value to compare</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The larger of the two values</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Limiting Values</p>
<div class="highlight"><pre><span></span><code>{% set damage = max(1, attack_power - defense) %}
The attack deals {{ damage }} damage.
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Ensuring Minimum Length</p>
<div class="highlight"><pre><span></span><code>{% set response_length = max(100, desired_length) %}
Generate a response of approximately {{ response_length }} words.
</code></pre></div>
</div>
<hr>
<h3 id="min">min</h3>
<p>Returns the smaller of two values.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x</code></td>
<td>any</td>
<td>First value to compare</td>
</tr>
<tr>
<td><code>y</code></td>
<td>any</td>
<td>Second value to compare</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The smaller of the two values</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Capping Values</p>
<div class="highlight"><pre><span></span><code>{% set health = min(character.current_health, character.max_health) %}
Health: {{ health }}/{{ character.max_health }}
</code></pre></div>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Limiting Context Length</p>
<div class="highlight"><pre><span></span><code>{% set context_lines = min(len(history), 50) %}
&lt;|SECTION:RECENT HISTORY|&gt;
{% for message in history[-context_lines:] %}
{{ message.text }}
{% endfor %}
&lt;|CLOSE_SECTION|&gt;
</code></pre></div>
</div>
<hr>
<h3 id="join">join</h3>
<p>Joins elements of a list into a single string using a separator.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>x</code></td>
<td>list</td>
<td>The list of items to join</td>
</tr>
<tr>
<td><code>y</code></td>
<td>str</td>
<td>The separator string</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>A string with all items joined by the separator</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Creating Lists</p>
<div class="highlight"><pre><span></span><code>{% set abilities = ["fire magic", "healing", "teleportation"] %}
{{ character.name }} can use: {{ join(abilities, ", ") }}.
</code></pre></div>
<p>Output:
</p><div class="highlight"><pre><span></span><code>Alice can use: fire magic, healing, teleportation.
</code></pre></div><p></p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Building Formatted Output</p>
<div class="highlight"><pre><span></span><code>{% set traits = [] %}
{% if character.strength &gt; 15 %}{% set _ = traits.append("strong") %}{% endif %}
{% if character.intelligence &gt; 15 %}{% set _ = traits.append("intelligent") %}{% endif %}
{% if character.charisma &gt; 15 %}{% set _ = traits.append("charismatic") %}{% endif %}
{% if traits %}
{{ character.name }} is {{ join(traits, " and ") }}.
{% endif %}
</code></pre></div>
</div>
<hr>
<h3 id="data_format_type">data_format_type</h3>
<p>Returns the current data format type (JSON or YAML) that the client prefers for structured responses.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<p>This function takes no arguments.</p>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>A string: either "json" or "yaml"</p>
</div>
<div class="admonition example">
<p class="admonition-title">Example: Format-Specific Instructions</p>
<div class="highlight"><pre><span></span><code>{% if data_format_type() == "yaml" %}
&lt;|SECTION:FORMAT NOTE|&gt;
Please ensure proper YAML indentation (2 spaces).
&lt;|CLOSE_SECTION|&gt;
{% else %}
&lt;|SECTION:FORMAT NOTE|&gt;
Please ensure valid JSON syntax with proper comma placement.
&lt;|CLOSE_SECTION|&gt;
{% endif %}
</code></pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Client Preference</p>
<p>This function checks the client's <code>data_format</code> attribute first. If not set, it falls back to the prompt's default data format type.</p>
</div>
<hr>
<h3 id="count_tokens">count_tokens</h3>
<p>Counts the number of tokens in a given text string. The text is automatically deduplicated before counting.</p>
<div class="admonition payload">
<p class="admonition-title">Arguments</p>
<table>
<thead>
<tr>
<th>Argument</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>text</code></td>
<td>str</td>
<td>The text to count tokens for</td>
</tr>
</tbody>
</table>
</div>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The approximate number of tokens in the text</p>
</div>
<hr>
<h3 id="llm_can_be_coerced">llm_can_be_coerced</h3>
<p>Checks whether the current LLM client supports coercion (forcing specific output formats or behaviors).</p>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p><code>bool</code> - True if the client supports coercion, False otherwise</p>
</div>
<hr>
<h3 id="config">config</h3>
<p>Provides access to the global Talemate configuration object.</p>
<div class="admonition return">
<p class="admonition-title">Returns</p>
<p>The global configuration object with all Talemate settings</p>
</div>
<hr>
<h2 id="filters">Filters</h2>
<h3 id="condensed">condensed</h3>
<p>Condenses a string by removing extra whitespace and newlines.</p>
<div class="admonition example">
<p class="admonition-title">Example: Condensed String</p>
<div class="highlight"><pre><span></span><code>{{ "Hello\n\nWorld" | condensed }}
</code></pre></div>
<p>Output:
</p><div class="highlight"><pre><span></span><code>Hello World
</code></pre></div><p></p>
</div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "../../../..", "features": ["content.code.copy"], "search": "../../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../../../assets/javascripts/bundle.79ae519e.min.js"></script>
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>