forked from cleveragents/cleveragents-core
Fix: Got scientific paper writer going thropugh the stages.
This commit is contained in:
@@ -151,18 +151,12 @@ agents:
|
||||
result = "Already at the final stage."
|
||||
else:
|
||||
result = f"Error: Current stage '{current_stage}' is invalid."
|
||||
|
||||
|
||||
if target_stage:
|
||||
# Special handling when leaving vetting stage
|
||||
if current_stage == 'vetting' and target_stage != 'vetting':
|
||||
vetting_sources = context.get('vetting_sources', [])
|
||||
if vetting_sources:
|
||||
result = f"Advanced to stage: {target_stage}. Vetting sources preserved ({len(vetting_sources)} sources). Please provide your input for this stage."
|
||||
else:
|
||||
result = f"Advanced to stage: {target_stage}. No vetting sources found. Please provide your input for this stage."
|
||||
else:
|
||||
result = f"Advanced to stage: {target_stage}. Please provide your input for this stage."
|
||||
# Update the stage
|
||||
context['writing_stage'] = target_stage
|
||||
# Trigger the stage flow immediately by routing to it with empty input
|
||||
result = f"GOTO_{target_stage.upper()}:"
|
||||
|
||||
elif command == '!accept':
|
||||
if context.get('writing_stage') == 'core_content':
|
||||
@@ -344,10 +338,11 @@ agents:
|
||||
provider: openai
|
||||
model: gpt-3.5-turbo
|
||||
system_prompt: |
|
||||
You are an assistant helping to define a scientific paper. The user has been asked the topic of their paper and
|
||||
is responding. If their answer isn't clear, then ask clarifying questions until it is clear. Once you get a clear
|
||||
response then reply with only the string "SET_TOPIC: " followed by a one sentence summary of the topic the user
|
||||
desires.
|
||||
You are an assistant helping to define a scientific paper. If the user has not yet provided a topic, ask them
|
||||
"What topic would you like to write about?" If the user's answer isn't clear, ask clarifying questions until
|
||||
it is clear. Once you get a clear response then reply with only the string "SET_TOPIC: " followed by a one
|
||||
sentence summary of the topic the user desires. Do not include any other text in your response when you provide
|
||||
the SET_TOPIC response, just the string "SET_TOPIC: " followed by the one sentence summary.
|
||||
|
||||
ask_length:
|
||||
type: llm
|
||||
@@ -355,12 +350,13 @@ agents:
|
||||
provider: openai
|
||||
model: gpt-3.5-turbo
|
||||
system_prompt: |
|
||||
The topic has just been set. Now, please ask for the desired length of the paper, the user may specify this
|
||||
however they like, such as pages, paragraphs, or total number of words. If the user doesnt give an answer
|
||||
sufficiently detailed for you to answer with an approximate desired word count, then ask clarifying questions
|
||||
until this is clear. Once it is clear enough for you to give an approximate desired word cound then reply with
|
||||
only the string "SET_LENGTH: " followed by an integer number (using digits not words) indicating the approximate
|
||||
desired word count; this response must not have any words other than "SET_LENGTH:" and then a numerical number.
|
||||
The topic has just been set. If the user has not yet provided information about the desired length, ask them
|
||||
"What length would you like for this paper? You can specify in pages, paragraphs, or word count." If the user
|
||||
doesnt give an answer sufficiently detailed for you to answer with an approximate desired word count, then ask
|
||||
clarifying questions until this is clear. Once it is clear enough for you to give an approximate desired word
|
||||
count then reply with only the string "SET_LENGTH: " followed by an integer number (using digits not words)
|
||||
indicating the approximate desired word count; this response must not have any words other than "SET_LENGTH:"
|
||||
and then a numerical number.
|
||||
|
||||
ask_audience:
|
||||
type: llm
|
||||
@@ -368,11 +364,11 @@ agents:
|
||||
provider: openai
|
||||
model: gpt-3.5-turbo
|
||||
system_prompt: |
|
||||
The length has just been set. Now, please ask who the target audience is (e.g., general public, experts). If the
|
||||
user doesnt give an answer sufficiently detailed for you to answer with an intended audience, then ask
|
||||
clarifying questions until this is clear. Once it is clear enough for you to give the intended audience then
|
||||
reply with only the string "SET_AUDIENCE: " followed by a short summary of who the intended audience is for this
|
||||
paper.
|
||||
The length has just been set. If the user has not yet provided information about the target audience, ask them
|
||||
"Who is the target audience for this paper? (e.g., general public, experts, academics, etc.)" If the user
|
||||
doesnt give an answer sufficiently detailed for you to answer with an intended audience, then ask clarifying
|
||||
questions until this is clear. Once it is clear enough for you to give the intended audience then reply with
|
||||
only the string "SET_AUDIENCE: " followed by a short summary of who the intended audience is for this paper.
|
||||
|
||||
ask_publication:
|
||||
type: llm
|
||||
@@ -380,12 +376,13 @@ agents:
|
||||
provider: openai
|
||||
model: gpt-3.5-turbo
|
||||
system_prompt: |
|
||||
The audience has just been set. Now, please ask if they plan to submit it to a specific publication. If the
|
||||
user doesnt give an answer sufficiently detailed for you to answer with an intended publication, then ask
|
||||
clarifying questions until this is clear, or it is determined it wont be published to a publication. Once it is
|
||||
clear enough for you to give the intended publication then reply with only the string "SET_PUBLICATION: " followed by
|
||||
the name of the publication, or if no publication will be submitted to then reply with just the string
|
||||
"SET_PUBLICATION: none" and nothing else.
|
||||
The audience has just been set. If the user has not yet provided information about publication plans, ask them
|
||||
"Do you plan to submit this paper to a specific publication or journal?" If the user doesnt give an answer
|
||||
sufficiently detailed for you to answer with an intended publication, then ask clarifying questions until this
|
||||
is clear, or it is determined it wont be published to a publication. Once it is clear enough for you to give
|
||||
the intended publication then reply with only the string "SET_PUBLICATION: " followed by the name of the
|
||||
publication, or if no publication will be submitted to then reply with just the string "SET_PUBLICATION: none"
|
||||
and nothing else.
|
||||
|
||||
ask_format:
|
||||
type: llm
|
||||
@@ -393,14 +390,15 @@ agents:
|
||||
provider: openai
|
||||
model: gpt-3.5-turbo
|
||||
system_prompt: |
|
||||
The intended publication has just been set. Now, ask what format the paper should be in.
|
||||
Currently, only 'latex' is supported. If they provide any other answer, you MUST state that the format is not
|
||||
The intended publication has just been set. If the user has not yet provided information about the desired
|
||||
format, ask them "What format would you like for this paper? (Note: Currently only 'latex' is supported.)"
|
||||
Currently, only 'latex' is supported. If they provide any other answer, you MUST state that the format is not
|
||||
supported and that only 'latex' is available. Only accept 'latex' as a valid answer.
|
||||
- Example user input: "markdown"
|
||||
- Your response: "That format isn't supported yet. The only supported formats are: latex."
|
||||
|
||||
If the user doesnt give an answer sufficiently detailed for you to determine their desired format, then ask
|
||||
clarifying questions until this is clear. Once it is clear enough for you to give the intended format then reply
|
||||
|
||||
If the user doesnt give an answer sufficiently detailed for you to determine their desired format, then ask
|
||||
clarifying questions until this is clear. Once it is clear enough for you to give the intended format then reply
|
||||
with only the string "SET_FORMAT: " followed by the desired format, which should be latex.
|
||||
|
||||
ask_other:
|
||||
@@ -409,11 +407,12 @@ agents:
|
||||
provider: openai
|
||||
model: gpt-3.5-turbo
|
||||
system_prompt: |
|
||||
You just asked the user if there are any other requirements that should be
|
||||
considered that we didnt cover. If the user doesnt give an answer sufficiently detailed for you to determine
|
||||
what these additional requirements are then ask clarifying questions until this is clear. Once it is clear
|
||||
enough for you to effectively summarize these additional requirements then reply with only the string
|
||||
"SET_OTHER: " followed by a summary of the additional requirements the user has explained throughout the
|
||||
If the user has not yet been asked about other requirements, ask them "Are there any other requirements or
|
||||
specifications that should be considered for this paper?" If the user doesnt give an answer sufficiently
|
||||
detailed for you to determine what these additional requirements are then ask clarifying questions until this
|
||||
is clear. If the user indicates there are no other requirements, respond with "SET_OTHER: none". Once it is
|
||||
clear enough for you to effectively summarize these additional requirements then reply with only the string
|
||||
"SET_OTHER: " followed by a summary of the additional requirements the user has explained throughout the
|
||||
conversations.
|
||||
|
||||
# ============================================
|
||||
@@ -845,6 +844,267 @@ routes:
|
||||
- type: map
|
||||
params:
|
||||
agent: command_handler
|
||||
# Command handler may return routing instructions, process them
|
||||
- type: switch
|
||||
params:
|
||||
cases:
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_INTRO"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_INTRO:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: intro_agent
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_DISCOVERY"
|
||||
operators:
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- type: switch
|
||||
params:
|
||||
cases:
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "ROUTE_ASK_TOPIC"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "ROUTE_ASK_TOPIC:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: ask_topic
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "ROUTE_ASK_LENGTH"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "ROUTE_ASK_LENGTH:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: ask_length
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "ROUTE_ASK_AUDIENCE"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "ROUTE_ASK_AUDIENCE:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: ask_audience
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "ROUTE_ASK_PUBLICATION"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "ROUTE_ASK_PUBLICATION:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: ask_publication
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "ROUTE_ASK_FORMAT"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "ROUTE_ASK_FORMAT:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: ask_format
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "ROUTE_ASK_OTHER"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "ROUTE_ASK_OTHER:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: ask_other
|
||||
- type: map
|
||||
params:
|
||||
agent: discovery_controller
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "DISCOVERY_RESPONSE:"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "DISCOVERY_RESPONSE:"
|
||||
new: ""
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_BRAINSTORMING"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_BRAINSTORMING:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: brainstorming_agent
|
||||
- type: map
|
||||
params:
|
||||
agent: brainstorming_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_VETTING"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_VETTING:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: vetting_agent
|
||||
- type: map
|
||||
params:
|
||||
agent: vetting_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_STRUCTURE"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_STRUCTURE:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: structure_agent
|
||||
- type: map
|
||||
params:
|
||||
agent: structure_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_DEEP_RESEARCH"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_DEEP_RESEARCH:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: deep_research_agent
|
||||
- type: map
|
||||
params:
|
||||
agent: deep_research_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_CORE_CONTENT"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_CORE_CONTENT:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: core_content_manager
|
||||
- type: switch
|
||||
params:
|
||||
cases:
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "WRITE_SECTION:"
|
||||
operators:
|
||||
- type: map
|
||||
params:
|
||||
agent: core_content_agent
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "FINISH_CORE_CONTENT:"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "FINISH_CORE_CONTENT:"
|
||||
new: ""
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_FRAMING_CONTENT"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_FRAMING_CONTENT:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: framing_agent
|
||||
- type: map
|
||||
params:
|
||||
agent: framing_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_PROOFREADING"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_PROOFREADING:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: proofreading_agent
|
||||
- type: map
|
||||
params:
|
||||
agent: proofreading_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_FORMATTING"
|
||||
operators:
|
||||
- type: transform
|
||||
params:
|
||||
type: replace
|
||||
old: "GOTO_FORMATTING:"
|
||||
new: ""
|
||||
- type: map
|
||||
params:
|
||||
agent: latex_formatter
|
||||
- type: map
|
||||
params:
|
||||
agent: formatting_saver
|
||||
- condition:
|
||||
type: content_contains
|
||||
text: "GOTO_INTRO"
|
||||
|
||||
Reference in New Issue
Block a user