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
相关推荐
七夜zippoe3 小时前
高性能网络编程实战:用Tokio构建自定义协议服务器
linux·服务器·网络·rust·tokio
桃子不吃李子3 小时前
简单搭建express服务器
运维·服务器·express
owCode3 小时前
Linux中的管道
linux·运维·服务器
北亚数据恢复3 小时前
服务器数据恢复—raid5阵列硬盘离线搞崩溃,分区数据恢复案例来袭
运维·服务器
neo_will_mvp3 小时前
服务器bmc功能
linux·运维·服务器
吉普赛的歌4 小时前
【阿里云】ECS服务器重启需要注意的事项
运维·服务器·阿里云
无聊的小坏坏4 小时前
基于 TCP 线程池服务器封装 HTTP 服务器:从协议解析到适配落地
服务器·tcp/ip·http
草莓熊Lotso4 小时前
Linux 权限管理进阶:从 umask 到粘滞位的深度解析
linux·运维·服务器·人工智能·ubuntu·centos·unix
iCxhust6 小时前
windows环境下在Bochs中运行Linux0.12系统
linux·运维·服务器·windows·minix