mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-07-29 15:23:51 +00:00
Delete utils.py; move to agentic system
This commit is contained in:
parent
9ec06918a5
commit
afb18880b5
1 changed files with 0 additions and 149 deletions
|
@ -1,149 +0,0 @@
|
|||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under the terms described in the LICENSE file in
|
||||
# the root directory of this source tree.
|
||||
|
||||
import uuid
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
from typing import List, Optional
|
||||
|
||||
from llama_models.llama3.api.datatypes import * # noqa: F403
|
||||
from llama_toolchain.agentic_system.api import * # noqa: F403
|
||||
from llama_toolchain.agentic_system.client import AgenticSystemClient
|
||||
from llama_toolchain.memory.api import * # noqa: F403
|
||||
from llama_toolchain.safety.api import * # noqa: F403
|
||||
from llama_toolchain.tools.custom.datatypes import CustomTool
|
||||
|
||||
from .execute_with_custom_tools import AgentWithCustomToolExecutor
|
||||
|
||||
|
||||
class AttachmentBehavior(Enum):
|
||||
rag = "rag"
|
||||
code_interpreter = "code_interpreter"
|
||||
auto = "auto"
|
||||
|
||||
|
||||
def default_builtins() -> List[BuiltinTool]:
|
||||
return [
|
||||
BuiltinTool.brave_search,
|
||||
BuiltinTool.wolfram_alpha,
|
||||
BuiltinTool.photogen,
|
||||
BuiltinTool.code_interpreter,
|
||||
]
|
||||
|
||||
|
||||
@dataclass
|
||||
class QuickToolConfig:
|
||||
custom_tools: List[CustomTool] = field(default_factory=list)
|
||||
|
||||
prompt_format: ToolPromptFormat = ToolPromptFormat.json
|
||||
|
||||
# use this to control whether you want the model to write code to
|
||||
# process them, or you want to "RAG" them beforehand
|
||||
attachment_behavior: AttachmentBehavior = AttachmentBehavior.auto
|
||||
|
||||
builtin_tools: List[BuiltinTool] = field(default_factory=default_builtins)
|
||||
|
||||
# if you have a memory bank already pre-populated, specify it here
|
||||
memory_bank_id: Optional[str] = None
|
||||
|
||||
|
||||
# This is a utility function; it does not provide all bells and whistles
|
||||
# you can get from the underlying AgenticSystem API. Any limitations should
|
||||
# ideally be resolved by making another well-scoped utility function instead
|
||||
# of adding complex options here.
|
||||
async def make_agent_config_with_custom_tools(
|
||||
model: str = "Meta-Llama3.1-8B-Instruct",
|
||||
disable_safety: bool = False,
|
||||
tool_config: QuickToolConfig = QuickToolConfig(),
|
||||
) -> AgentConfig:
|
||||
tool_definitions = []
|
||||
|
||||
# ensure code interpreter is enabled if attachments need it
|
||||
builtin_tools = tool_config.builtin_tools
|
||||
tool_choice = ToolChoice.auto
|
||||
if tool_config.attachment_behavior == AttachmentBehavior.code_interpreter:
|
||||
if BuiltinTool.code_interpreter not in builtin_tools:
|
||||
builtin_tools.append(BuiltinTool.code_interpreter)
|
||||
|
||||
tool_choice = ToolChoice.required
|
||||
|
||||
for t in builtin_tools:
|
||||
if t == BuiltinTool.brave_search:
|
||||
tool_definitions.append(BraveSearchToolDefinition())
|
||||
elif t == BuiltinTool.wolfram_alpha:
|
||||
tool_definitions.append(WolframAlphaToolDefinition())
|
||||
elif t == BuiltinTool.photogen:
|
||||
tool_definitions.append(PhotogenToolDefinition())
|
||||
elif t == BuiltinTool.code_interpreter:
|
||||
tool_definitions.append(CodeInterpreterToolDefinition())
|
||||
|
||||
# enable memory unless we are specifically disabling it
|
||||
if tool_config.attachment_behavior != AttachmentBehavior.code_interpreter:
|
||||
bank_configs = []
|
||||
if tool_config.memory_bank_id:
|
||||
bank_configs.append(
|
||||
AgenticSystemVectorMemoryBankConfig(bank_id=tool_config.memory_bank_id)
|
||||
)
|
||||
tool_definitions.append(MemoryToolDefinition(memory_bank_configs=bank_configs))
|
||||
|
||||
tool_definitions += [t.get_tool_definition() for t in tool_config.custom_tools]
|
||||
|
||||
if not disable_safety:
|
||||
for t in tool_definitions:
|
||||
t.input_shields = [ShieldDefinition(shield_type=BuiltinShield.llama_guard)]
|
||||
t.output_shields = [
|
||||
ShieldDefinition(shield_type=BuiltinShield.llama_guard),
|
||||
ShieldDefinition(shield_type=BuiltinShield.injection_shield),
|
||||
]
|
||||
|
||||
cfg = AgentConfig(
|
||||
model=model,
|
||||
instructions="You are a helpful assistant",
|
||||
sampling_params=SamplingParams(),
|
||||
tools=tool_definitions,
|
||||
tool_prompt_format=tool_config.prompt_format,
|
||||
tool_choice=tool_choice,
|
||||
input_shields=(
|
||||
[]
|
||||
if disable_safety
|
||||
else [
|
||||
ShieldDefinition(shield_type=BuiltinShield.llama_guard),
|
||||
ShieldDefinition(shield_type=BuiltinShield.jailbreak_shield),
|
||||
]
|
||||
),
|
||||
output_shields=(
|
||||
[]
|
||||
if disable_safety
|
||||
else [
|
||||
ShieldDefinition(shield_type=BuiltinShield.llama_guard),
|
||||
]
|
||||
),
|
||||
)
|
||||
return cfg
|
||||
|
||||
|
||||
async def get_agent_with_custom_tools(
|
||||
host: str,
|
||||
port: int,
|
||||
agent_config: AgentConfig,
|
||||
custom_tools: List[CustomTool],
|
||||
) -> AgentWithCustomToolExecutor:
|
||||
api = AgenticSystemClient(base_url=f"http://{host}:{port}")
|
||||
|
||||
create_response = await api.create_agentic_system(agent_config)
|
||||
agent_id = create_response.agent_id
|
||||
|
||||
name = f"Session-{uuid.uuid4()}"
|
||||
response = await api.create_agentic_system_session(
|
||||
agent_id=agent_id,
|
||||
session_name=name,
|
||||
)
|
||||
session_id = response.session_id
|
||||
|
||||
return AgentWithCustomToolExecutor(
|
||||
api, agent_id, session_id, agent_config, custom_tools
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue