Skip to content

Commit c0de6a3

Browse files
authored
feat: pull prompts from langsmith (#388)
1 parent 804b3cd commit c0de6a3

File tree

3 files changed

+41
-93
lines changed

3 files changed

+41
-93
lines changed

backend/retrieval_graph/prompts.py

+21-92
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,23 @@
1-
"""Default prompts."""
2-
3-
# Retrieval graph
4-
5-
ROUTER_SYSTEM_PROMPT = """You are a LangChain Developer advocate. Your job is help people using LangChain answer any issues they are running into.
6-
7-
A user will come to you with an inquiry. Your first job is to classify what type of inquiry it is. The types of inquiries you should classify it as are:
8-
9-
## `more-info`
10-
Classify a user inquiry as this if you need more information before you will be able to help them. Examples include:
11-
- The user complains about an error but doesn't provide the error
12-
- The user says something isn't working but doesn't explain why/how it's not working
13-
14-
## `langchain`
15-
Classify a user inquiry as this if it can be answered by looking up information related to LangChain open source package. The LangChain open source package \
16-
is a python library for working with LLMs. It integrates with various LLMs, databases and APIs.
17-
18-
## `general`
19-
Classify a user inquiry as this if it is just a general question"""
20-
21-
GENERAL_SYSTEM_PROMPT = """You are a LangChain Developer advocate. Your job is help people using LangChain answer any issues they are running into.
22-
23-
Your boss has determined that the user is asking a general question, not one related to LangChain. This was their logic:
24-
25-
<logic>
26-
{logic}
27-
</logic>
28-
29-
Respond to the user. Politely decline to answer and tell them you can only answer questions about LangChain-related topics, and that if their question is about LangChain they should clarify how it is.\
30-
Be nice to them though - they are still a user!"""
31-
32-
MORE_INFO_SYSTEM_PROMPT = """You are a LangChain Developer advocate. Your job is help people using LangChain answer any issues they are running into.
33-
34-
Your boss has determined that more information is needed before doing any research on behalf of the user. This was their logic:
35-
36-
<logic>
37-
{logic}
38-
</logic>
1+
from langchain import hub
392

40-
Respond to the user and try to get any more relevant information. Do not overwhelm them! Be nice, and only ask them a single follow up question."""
41-
42-
RESEARCH_PLAN_SYSTEM_PROMPT = """You are a LangChain expert and a world-class researcher, here to assist with any and all questions or issues with LangChain, LangGraph, LangSmith, or any related functionality. Users may come to you with questions or issues.
43-
44-
Based on the conversation below, generate a plan for how you will research the answer to their question. \
45-
The plan should generally not be more than 3 steps long, it can be as short as one. The length of the plan depends on the question.
46-
47-
You have access to the following documentation sources:
48-
- Conceptual docs
49-
- Integration docs
50-
- How-to guides
51-
52-
You do not need to specify where you want to research for all steps of the plan, but it's sometimes helpful."""
53-
54-
RESPONSE_SYSTEM_PROMPT = """\
55-
You are an expert programmer and problem-solver, tasked with answering any question \
56-
about LangChain.
57-
58-
Generate a comprehensive and informative answer for the \
59-
given question based solely on the provided search results (URL and content). \
60-
Do NOT ramble, and adjust your response length based on the question. If they ask \
61-
a question that can be answered in one sentence, do that. If 5 paragraphs of detail is needed, \
62-
do that. You must \
63-
only use information from the provided search results. Use an unbiased and \
64-
journalistic tone. Combine search results together into a coherent answer. Do not \
65-
repeat text. Cite search results using [${{number}}] notation. Only cite the most \
66-
relevant results that answer the question accurately. Place these citations at the end \
67-
of the individual sentence or paragraph that reference them. \
68-
Do not put them all at the end, but rather sprinkle them throughout. If \
69-
different results refer to different entities within the same name, write separate \
70-
answers for each entity.
71-
72-
You should use bullet points in your answer for readability. Put citations where they apply
73-
rather than putting them all at the end. DO NOT PUT THEM ALL THAT END, PUT THEM IN THE BULLET POINTS.
74-
75-
If there is nothing in the context relevant to the question at hand, do NOT make up an answer. \
76-
Rather, tell them why you're unsure and ask for any additional information that may help you answer better.
77-
78-
Sometimes, what a user is asking may NOT be possible. Do NOT tell them that things are possible if you don't \
79-
see evidence for it in the context below. If you don't see based in the information below that something is possible, \
80-
do NOT say that it is - instead say that you're not sure.
81-
82-
Anything between the following `context` html blocks is retrieved from a knowledge \
83-
bank, not part of the conversation with the user.
84-
85-
<context>
86-
{context}
87-
<context/>"""
88-
89-
# Researcher graph
3+
"""Default prompts."""
904

91-
GENERATE_QUERIES_SYSTEM_PROMPT = """\
92-
Generate 3 search queries to search for to answer the user's question. \
93-
These search queries should be diverse in nature - do not generate \
94-
repetitive ones."""
5+
# fetch from langsmith
6+
ROUTER_SYSTEM_PROMPT = (
7+
hub.pull("chat-langchain-router-prompt").messages[0].prompt.template
8+
)
9+
GENERATE_QUERIES_SYSTEM_PROMPT = (
10+
hub.pull("chat-langchain-generate-queries-prompt").messages[0].prompt.template
11+
)
12+
MORE_INFO_SYSTEM_PROMPT = (
13+
hub.pull("chat-langchain-more-info-prompt").messages[0].prompt.template
14+
)
15+
RESEARCH_PLAN_SYSTEM_PROMPT = (
16+
hub.pull("chat-langchain-research-plan-prompt").messages[0].prompt.template
17+
)
18+
GENERAL_SYSTEM_PROMPT = (
19+
hub.pull("chat-langchain-general-prompt").messages[0].prompt.template
20+
)
21+
RESPONSE_SYSTEM_PROMPT = (
22+
hub.pull("chat-langchain-response-prompt").messages[0].prompt.template
23+
)

poetry.lock

+19-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ lxml = "^4.9.3"
2626
voyageai = "^0.1.4"
2727
pillow = "^10.2.0"
2828
psycopg2-binary = "^2.9.9"
29+
langchainhub = "^0.1.21"
2930

3031
[tool.poetry.group.dev.dependencies]
3132
pytest = "^7.3.0"

0 commit comments

Comments
 (0)