camel [功能请求]整合代理的结构化输出

vaj7vani  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(118)

必需的先决条件

动机

受最近 LLM 在结构化输出方面的进展启发:https://simmering.dev/blog/structured_output/ 。我认为支持代理的结构化输出是很重要的。以下是关于如何实现这个想法的大致思路:

from typing import List, Literal
from pydantic import BaseModel, Field

from camel.agents import ChatAgent

class Entity(BaseModel):
    name: str = Field(description="name of the entity")
    label: Literal["PERSON", "ORGANIZATION", "LOCATION"]

class ExtractEntities(BaseModel):
    entities: List[Entity]

agent = ChatAgent(...)

out_response = agent.step(msg, response_schema=ExtractEntities)
content: ExtractEntities = out_response.msg.content  # This will need message to support different schema

这对知识图谱代理也可能有所帮助。

解决方案

  • 无响应*

替代方案

  • 无响应*

其他上下文

  • 无响应*
q9yhzks0

q9yhzks01#

目前有三种解决方案和三个不同的问题:
在初始化聊天代理时添加输出模式;
将输出模式作为工具添加到聊天代理的工具中;
将输出模式作为代理步骤函数中的参数;
但是现在有三个问题:

对于第一步,初始化聊天代理需要我们自定义OpenAI的输出模式。然而,这与我们原始的架构存在许多冲突,需要对我们现有的结构进行重大修改。我们已经与Zecheng讨论过这个问题,看起来非常复杂。
对于第二步,我们需要将Pydantic转换为一个函数,然后将其作为函数工具添加到聊天代理的工具中。
对于第三步,我们需要修改步骤的结构和OpenAI模型运行函数。由于我们使用函数调用方法来实现这一点,因此需要为OpenAI运行指定工具参数,我们还需要修改聊天代理步骤以帮助我们使用输出模式输出响应。

ufj5ltwl

ufj5ltwl2#

@lightaime @Wendong-Fan

相关问题