代理

在 Llama Stack 中,代理是一个强大的抽象,允许您构建复杂的 AI 应用程序。

Llama Stack 代理框架构建于模块化架构之上,允许构建灵活且功能强大的 AI 应用程序。本文档解释了关键组件及其协同工作方式。

核心概念

1. 代理配置

代理使用 AgentConfig 类进行配置,该类包含

  • 模型:为代理提供动力的底层 LLM

  • 指令:定义代理行为的系统提示

  • 工具:代理可用于与外部系统交互的能力

  • 安全护盾:确保负责任的 AI 行为的护栏

from llama_stack_client import Agent


# Create the agent
agent = Agent(
    llama_stack_client,
    model="meta-llama/Llama-3-70b-chat",
    instructions="You are a helpful assistant that can use tools to answer questions.",
    tools=["builtin::code_interpreter", "builtin::rag/knowledge_search"],
)

2. 会话

代理通过会话维护状态,会话代表一个对话线程

# Create a session
session_id = agent.create_session(session_name="My conversation")

3. 回合

与代理的每次交互称为“回合”,包含

  • 输入消息:用户发送给代理的内容

  • 步骤:代理的内部处理(推理、工具执行等)

  • 输出消息:代理的响应

from llama_stack_client import AgentEventLogger

# Create a turn with streaming response
turn_response = agent.create_turn(
    session_id=session_id,
    messages=[{"role": "user", "content": "Tell me about Llama models"}],
)
for log in AgentEventLogger().log(turn_response):
    log.print()

非流式

from rich.pretty import pprint

# Non-streaming API
response = agent.create_turn(
    session_id=session_id,
    messages=[{"role": "user", "content": "Tell me about Llama models"}],
    stream=False,
)
print("Inputs:")
pprint(response.input_messages)
print("Output:")
pprint(response.output_message.content)
print("Steps:")
pprint(response.steps)

4. 步骤

每个回合包含多个步骤,这些步骤代表代理的思考过程

  • 推理步骤:代理生成文本响应

  • 工具执行步骤:代理使用工具收集信息

  • 护盾调用步骤:执行安全检查

代理执行循环

有关代理回合中发生的更多详细信息,请参阅代理执行循环