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
相关推荐
keyipatience6 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
星夜夏空998 小时前
网络编程(1)
服务器·网络
川石课堂软件测试8 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
迷途呀8 小时前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
就不掉头发11 小时前
计算机的虚拟内存
linux·服务器·windows
暴力求解11 小时前
Linux ---线程控制(二)
linux·运维·服务器·操作系统
smartvxworks11 小时前
Linux 实时内核(Linux Real-Time Kernel)详解:原理、实践与优化
java·linux·服务器
梦痕长情11 小时前
等保三级三权账户
linux·运维·服务器
wuqingshun31415912 小时前
说说TCP的3次握手?为什么需要三次握手?
服务器·网络协议·tcp/ip
CHANG_THE_WORLD12 小时前
1.简单的服务端和客户端(仅作为内容补充)
linux·服务器·网络