必需的先决条件
- 我搜索了 Issue Tracker 和 Discussions ,但尚未报告。如果已经报告过,请在那里加1或评论。
- 建议首先在 Discussion 中提问。
动机
受最近 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
这对知识图谱代理也可能有所帮助。
解决方案
- 无响应*
替代方案
- 无响应*
其他上下文
- 无响应*
2条答案
按热度按时间q9yhzks01#
目前有三种解决方案和三个不同的问题:
在初始化聊天代理时添加输出模式;
将输出模式作为工具添加到聊天代理的工具中;
将输出模式作为代理步骤函数中的参数;
但是现在有三个问题:
对于第一步,初始化聊天代理需要我们自定义OpenAI的输出模式。然而,这与我们原始的架构存在许多冲突,需要对我们现有的结构进行重大修改。我们已经与Zecheng讨论过这个问题,看起来非常复杂。
对于第二步,我们需要将Pydantic转换为一个函数,然后将其作为函数工具添加到聊天代理的工具中。
对于第三步,我们需要修改步骤的结构和OpenAI模型运行函数。由于我们使用函数调用方法来实现这一点,因此需要为OpenAI运行指定工具参数,我们还需要修改聊天代理步骤以帮助我们使用输出模式输出响应。
ufj5ltwl2#
@lightaime @Wendong-Fan