def step2_1():
class Two_step(BaseModel):
content: str = Field(description="content")
question_id: int = Field(description="问题id,该id不可重复")
depend_id: list[int] = Field(description="是否依赖别的问题id,可以为数组,没有就为空")
type: int = Field(
description="问题可以分类为以下之一:0本地知识或网络信息检索,1问候类问题,2公共知识类问题,3写标书,4带有cvs文本的数据分析,5工程时序数据查寻,63D建模")
end: str = Field(description="如果是步骤最后一步设置为1,否则为0")
docs: str = Field(description="初始化为空,不做处理")
class Config(ConfigDict):
arbitrary_types_allowed = True
class Two_steps(BaseModel):
contents: list[Two_step]
student_query = "写一份标书"
parser = PydanticOutputParser(pydantic_object=Two_steps)
prompt = PromptTemplate(
template="""将query中的内容分解成多个详细步骤,填充到以下json格式\n{format_instructions}\nquery={query}\n""",
input_variables=["query"],
partial_variables={"format_instructions": parser.get_format_instructions() + "用中文回答,只回复json"},
)
_input = prompt.format_prompt(query=student_query)
messages = [{'role': 'user', 'content': _input.to_string()}]
# moonshot-v1-8k,GLM-4
response = get_modle_completion(messages=messages, model='GLM-4', temperature=0.3, stream_flag=False)
steps = parser.parse(response.choices[0].message.content)
# [Two_step(content='了解标书要求', question_id=1, depend_id=[], type=0, end='0'), Two_step(content='收集必要资料', question_id=2, depend_id=[1], type=0, end='0'), Two_step(content='撰写标书草稿', question_id=3, depend_id=[1, 2], type=1, end='0'), Two_step(content='审查标书内容', question_id=4, depend_id=[3], type=0, end='0'), Two_step(content='修改完善标书', question_id=5, depend_id=[4], type=1, end='0'), Two_step(content='标书定稿', question_id=6, depend_id=[5], type=0, end='1')]
# content='了解标书要求' question_id=1 depend_id=[] type=0 end='0'
# content='收集必要资料' question_id=2 depend_id=[1] type=0 end='0'
# content='撰写标书草稿' question_id=3 depend_id=[1, 2] type=1 end='0'
# content='审查标书内容' question_id=4 depend_id=[3] type=0 end='0'
# content='修改完善标书' question_id=5 depend_id=[4] type=1 end='0'
# content='标书定稿' question_id=6 depend_id=[5] type=0 end='1'
# 数据分析的答案
data_ana = ""
# 直接结束循环的flag
flag = 0
while len(steps.contents) != 0 and flag != 1:
for item in steps.contents:
if len(item.depend_id) == 0:
Results = ""
# 处理这个步骤
if item.type == 0:
# 调用本地知识库查找
Results = get_completion(item.content, item.docs)
if item.type == 2:
# 带有cvs文本的数据分析,调pandasai
data_ana = get_data_analysis()
flag = 1
break
if item.type == 3:
# 时序数据
shucaidata_search()
# 从其他步骤的依赖项中删除这个步骤
to_delete_idx = item.question_id
for itemm in steps.contents:
while to_delete_idx in itemm.depend_id:
itemm.depend_id.remove(to_delete_idx)
# 将执行结果放入依赖它的步骤
itemm.docs = Results
一段鸡肋代码
最新推荐文章于 2024-10-08 12:37:10 发布