new·The score now tells you which way it movedA brain's exam only ever grows: its own material writes questions, and so does every question a real caller asked and did not get answered. The score is a percentage over that growing set, so a brain that learned more could post a smaller number — and this week three did. One of them answered two MORE questions than the week before and showed eighteen points less. Printed as a single percentage, that reads as decline to a reader and as punishment to anyone who contributes material.all news →
mozg.beta
Sign in

LangChain · Agents · all subjects

agents/system-prompt

19 notes, read out of this brain and free to use. Each one was extracted from a source and is re-checked against its exam.

System prompt parameter accepts string or SystemMessage

The system_prompt parameter can accept either a string or a SystemMessage object. This parameter shapes how the agent approaches tasks. For dynamic prompts at runtime, use middleware instead.

Debug INVALID_PROMPT_INPUT with LangSmith or logging

To troubleshoot INVALID_PROMPT_INPUT errors, debug by examining actual inputs to your prompt template using LangSmith for observability or logging to verify they match expectations.

INVALID_PROMPT_INPUT error - definition

The INVALID_PROMPT_INPUT error occurs when a prompt template receives missing or invalid input variables.

Curly braces in prompt templates must be escaped

When adding literal JSON objects or other content with curly braces directly into a prompt template, the braces must be escaped by doubling them. For example, {"key": "value"} should be written as {{"key": "value"}} to prevent the template parser from interpreting them as variable placeholders. A single opening brace { is interpreted as the start of a template variable.

Unescaped JSON in prompt templates creates unexpected variables

If you include a JSON object with unescaped curly braces in a prompt template, each key in the JSON will be interpreted as a required template variable. For example, a JSON object like { "firstName": "John", "lastName": "Doe", "age": 21 } with unescaped braces will create firstName, lastName, and age as required input variables in addition to any intentional variables like question.

Escaping curly braces in PromptTemplate f-strings

When using f-string format in PromptTemplate, use {{ for single braces in f-strings and {{{{ for double braces in f-strings to escape them properly.

MessagesPlaceholder requires message arrays or message-like objects

When using MessagesPlaceholder components in a prompt template, confirm you're passing message arrays or message-like objects. If using shorthand tuples, wrap variable names in curly braces like ["placeholder", "{messages}"].

Test Prompt Hub prompts with sample inputs

When sourcing prompts from LangChain Prompt Hub, isolate and test the prompt with sample inputs to ensure it functions as intended and does not have hidden variable requirements.

Escaping curly braces in PromptTemplate - TypeScript example

Example showing how to properly escape curly braces in a PromptTemplate: ```typescript import { PromptTemplate } from "@langchain/core/prompts"; import { ChatOpenAI } from "@langchain/openai"; const prompt = PromptTemplate.fromTemplate(`You are a helpful assistant. Here is an example of how you should respond: {{ "firstName": "John", "lastName": "Doe", "age": 21 }} Now, answer the following question: {question}`); ``` The JSON object is wrapped with double braces {{ }} to escape the curly braces, so only the {question} variable is treated as a template variable.

System prompt dynamic adjustment example with store

Example: Use @dynamic_prompt middleware to read user preferences from store. Access store via request.runtime.store.get(('preferences',), user_id). If user has communication_style preference, append to base prompt: f'User prefers {style} responses.'

System prompt dynamic adjustment example with state

Example: Use the @dynamic_prompt middleware to access message_count from request.messages (shortcut for request.state['messages']). If message_count > 10, append to base prompt: 'This is a long conversation - be extra concise.'

System prompt dynamic adjustment example with runtime context

Example: Use @dynamic_prompt middleware to read user_role and deployment_env from request.runtime.context. If user_role == 'admin', append: 'You have admin access. You can perform all operations.' If user_role == 'viewer', append: 'You have read-only access. Guide users to read operations only.' If env == 'production', append: 'Be extra careful with any data modifications.'

Prompt templates with state variable formatting

Step prompts are defined as strings with format placeholders like {warranty_status} and {issue_type}. The middleware calls prompt.format(**request.state) to inject current state values before sending to the model. This allows prompts to reference collected information dynamically.

Classification example system prompt

The system prompt for classification instructs: 'Analyze this query and determine which knowledge bases to consult. For each relevant source, generate a targeted sub-question optimized for that source. Available sources: github (Code, API references, implementation details, issues, pull requests), notion (Internal documentation, processes, policies, team wikis), slack (Team discussions, informal knowledge sharing, recent conversations). Return ONLY the sources that are relevant to the query. Each source should have a targeted sub-question optimized for that specific knowledge domain.'

Synthesis system prompt guidance

The system prompt for synthesis instructs to: combine information from multiple sources without redundancy, highlight the most relevant and actionable information, note any discrepancies between sources, and keep the response concise and well-organized. The function should reference the original query to ensure the answer addresses what the user asked.

Agent system prompts in router

GitHub agent: 'You are a GitHub expert. Answer questions about code, API references, and implementation details by searching repositories, issues, and pull requests.' Notion agent: 'You are a Notion expert. Answer questions about internal processes, policies, and team documentation by searching the organization's Notion workspace.' Slack agent: 'You are a Slack expert. Answer questions by searching relevant threads and discussions where team members have shared knowledge and solutions.'

Dynamic system prompt via middleware

Access short-term memory (state) in middleware to create dynamic prompts based on conversation history or custom state fields. Use `@dynamic_prompt` decorator to create dynamic system prompts that adapt based on runtime context, request data, or agent state.

SQL agent system prompt customization

SQL agents should be initialized with a descriptive system prompt to customize the agent's behavior before creating the agent with the model, tools, and prompt.

Voice agent system prompt requirements

Voice agent system prompts should instruct the model not to use emojis, special characters, or markdown, since responses will be read by a text-to-speech engine. Responses should be concise and friendly for natural conversation.

Give your agent this brain