Partial Prompt Templates in LangChain

https://python.langchain.com.cn/docs/modules/model_io/prompts/prompt_templates/partial

Partial Prompt Templates in LangChain

Partial prompt templates (called "partial" for short) are a useful feature in LangChain. Their core purpose is: fill in a subset of the required values first, then create a new prompt template that only needs the remaining values.

LangChain supports two main ways to use partial prompt templates. Below, we'll explain each method with simple language and the exact code/examples from the original source (no changes or omissions).

Method 1: Partial Formatting with String Values

When to use this?

This is for cases where you get some variables early (e.g., at the start of your code) and other variables later (e.g., from user input). Instead of waiting to pass all variables at once, you can fill in the early variables first.

Example 1: Use the .partial() method

Suppose we have a prompt template that needs two variables: foo and bar. We get foo first, then bar later.

Step 1: Import and create the original prompt template
python 复制代码
from langchain.prompts import PromptTemplate

# The template needs two variables: {foo} and {bar}
prompt = PromptTemplate(template="{foo}{bar}", input_variables=["foo", "bar"])
Step 2: Fill in the "early" variable (foo) with .partial()

This creates a new partial prompt template that only needs bar now.

python 复制代码
partial_prompt = prompt.partial(foo="foo")  # Fill in {foo} with the string "foo"
Step 3: Fill in the remaining variable (bar)

Use .format() to pass the remaining variable (bar):

python 复制代码
print(partial_prompt.format(bar="baz"))  # Pass {bar} with "baz"
Output
复制代码
foobaz

Example 2: Initialize with partial_variables

You can also fill in the "early" variable when creating the prompt template (instead of using .partial() later).

Code
python 复制代码
# input_variables only lists the remaining variable: {bar}
# partial_variables fills in {foo} upfront
prompt = PromptTemplate(
    template="{foo}{bar}", 
    input_variables=["bar"],  # Only need {bar} later
    partial_variables={"foo": "foo"}  # Fill {foo} with "foo" now
)

# Only pass {bar} to format()
print(prompt.format(bar="baz"))
Output
复制代码
foobaz

Method 2: Partial Formatting with Functions

When to use this?

This is for cases where a variable needs to be automatically fetched in the same way every time (e.g., current date/time). You don't want to hardcode it, and you don't want to pass it manually every time---so you use a function to get its value.

Example: Get current date automatically

Suppose we have a prompt template that needs two variables: adjective (from user input) and date (current date, fetched automatically).

Step 1: Define a function to get the value

First, create a function that returns the current date as a string:

python 复制代码
from datetime import datetime

def _get_datetime():
    now = datetime.now()  # Get current time
    return now.strftime("%m/%d/%Y, %H:%M:%S")  # Format as "month/day/year, hour:minute:second"
Example 1: Use the .partial() method
Step 1: Create the original prompt template
python 复制代码
prompt = PromptTemplate(
    template="Tell me a {adjective} joke about the day {date}", 
    input_variables=["adjective", "date"]  # Needs {adjective} and {date}
)

Use .partial() to set date to the result of _get_datetime() (note: we pass the function itself , not its result---no parentheses () after the function name):

python 复制代码
partial_prompt = prompt.partial(date=_get_datetime)
Step 3: Fill in the remaining variable (adjective)
python 复制代码
print(partial_prompt.format(adjective="funny"))
Output
复制代码
Tell me a funny joke about the day 02/27/2023, 22:15:16  # Date matches when you run the code
Example 2: Initialize with partial_variables

This is more common for function-based partialing (since the function runs automatically when needed).

Code
python 复制代码
prompt = PromptTemplate(
    template="Tell me a {adjective} joke about the day {date}", 
    input_variables=["adjective"],  # Only need {adjective} later
    partial_variables={"date": _get_datetime}  # Link {date} to the function
)

# Only pass {adjective} to format()
print(prompt.format(adjective="funny"))
Output
复制代码
Tell me a funny joke about the day 02/27/2023, 22:15:16  # Date matches when you run the code
相关推荐
Wang's Blog12 小时前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
EasyGBS15 小时前
终结训推割裂!EasyGBS×EasyAIS×DLTM,实现AI算法训推一体闭环落地!
服务器·深度学习·安全
Doris__HE16 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
爱喝热水的呀哈喽18 小时前
openroad make各个阶段
服务器
技灵AI18 小时前
Wan 3.0 API怎么做多参考商品视频?从图片、视频、音频分工到30秒交付
人工智能·prompt·aigc·音视频·wan 3.0
染指111019 小时前
119.Agent-LangChain核心组件-Runtime运行时
人工智能·langchain·agent
用户3134672143541 天前
Agent 开发学习笔记(六):LCEL:把组件串成链
langchain·agent
Huangjin007_1 天前
【Linux 系统篇(二十一)】进程(九):进程等待 wait/waitpid、status状态参数
linux·运维·服务器
ao-weilai1 天前
Linux网络编程:Socket UDP
linux·服务器·网络·c++
艾醒(AiXing-w)1 天前
LangChain 1.0 智能体开发(三):Agent 记忆管理——从短期对话到跨会话长期记忆
数据库·人工智能·langchain