一段鸡肋代码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值