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
相关推荐
feng_you_ying_li15 分钟前
linux之用户的权限详解(4)
linux·运维·服务器
二进制person1 小时前
JavaEE初阶 --网络编程
linux·服务器·网络
国医中兴2 小时前
Flutter 三方库 langchain_google 的鸿蒙化适配指南 - 链接 Gemini 智慧中枢、LangChain AI 实战、鸿蒙级智能应用专家
flutter·langchain·harmonyos
Irissgwe2 小时前
进程间通信
linux·服务器·网络·c++·进程间通信
鹭天3 小时前
Langchain学习笔记
笔记·学习·langchain
岁岁种桃花儿3 小时前
AI超级智能开发系列从入门到上天第四篇:AI应用方案设计
java·服务器·开发语言
TEC_INO4 小时前
嵌入式 Linux 开发知识总结
linux·运维·服务器
原来是猿4 小时前
VS Code Remote-SSH 连接失败:提示过程试图写入的管道不存在
linux·服务器·ssh
坚持就完事了5 小时前
Linux中的权限信息
linux·运维·服务器
顶点多余5 小时前
进程间通信 --- 共享内存篇(通信速度最快)
linux·服务器·jvm