mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-04 12:07:34 +00:00
Several smaller fixes to make adapters work
Also, reorganized the pattern of __init__ inside providers so configuration can stay lightweight
This commit is contained in:
parent
2a1552a5eb
commit
45987996c4
23 changed files with 164 additions and 160 deletions
|
@ -10,7 +10,7 @@ import os
|
|||
from pydantic import BaseModel
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Dict, List, Optional, Tuple
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
import pkg_resources
|
||||
import yaml
|
||||
|
@ -37,26 +37,17 @@ def get_dependencies(
|
|||
) -> Dependencies:
|
||||
from llama_toolchain.distribution.distribution import SERVER_DEPENDENCIES
|
||||
|
||||
def _deps(provider: ProviderSpec) -> Tuple[List[str], Optional[str]]:
|
||||
if isinstance(provider, InlineProviderSpec):
|
||||
return provider.pip_packages, provider.docker_image
|
||||
else:
|
||||
if provider.adapter:
|
||||
return provider.adapter.pip_packages, None
|
||||
return [], None
|
||||
|
||||
pip_packages, docker_image = _deps(provider)
|
||||
pip_packages = provider.pip_packages
|
||||
for dep in dependencies.values():
|
||||
dep_pip_packages, dep_docker_image = _deps(dep)
|
||||
if docker_image and dep_docker_image:
|
||||
if dep.docker_image:
|
||||
raise ValueError(
|
||||
"You can only have the root provider specify a docker image"
|
||||
)
|
||||
|
||||
pip_packages.extend(dep_pip_packages)
|
||||
pip_packages.extend(dep.pip_packages)
|
||||
|
||||
return Dependencies(
|
||||
docker_image=docker_image, pip_packages=pip_packages + SERVER_DEPENDENCIES
|
||||
docker_image=provider.docker_image,
|
||||
pip_packages=pip_packages + SERVER_DEPENDENCIES
|
||||
)
|
||||
|
||||
|
||||
|
@ -158,6 +149,7 @@ class ApiBuild(Subcommand):
|
|||
build_dir = BUILDS_BASE_DIR / args.api
|
||||
os.makedirs(build_dir, exist_ok=True)
|
||||
|
||||
# get these names straight. too confusing.
|
||||
provider_deps = parse_dependencies(args.dependencies or "", self.parser)
|
||||
dependencies = get_dependencies(providers[args.provider], provider_deps)
|
||||
|
||||
|
@ -167,7 +159,7 @@ class ApiBuild(Subcommand):
|
|||
api.value: {
|
||||
"provider_id": args.provider,
|
||||
},
|
||||
**{k: {"provider_id": v} for k, v in provider_deps.items()},
|
||||
**provider_deps,
|
||||
}
|
||||
with open(package_file, "w") as f:
|
||||
c = PackageConfig(
|
||||
|
|
|
@ -48,7 +48,10 @@ class ApiConfigure(Subcommand):
|
|||
)
|
||||
|
||||
def _run_api_configure_cmd(self, args: argparse.Namespace) -> None:
|
||||
config_file = BUILDS_BASE_DIR / args.api / f"{args.name}.yaml"
|
||||
name = args.name
|
||||
if not name.endswith(".yaml"):
|
||||
name += ".yaml"
|
||||
config_file = BUILDS_BASE_DIR / args.api / name
|
||||
if not config_file.exists():
|
||||
self.parser.error(
|
||||
f"Could not find {config_file}. Please run `llama api build` first"
|
||||
|
@ -79,10 +82,19 @@ def configure_llama_provider(config_file: Path) -> None:
|
|||
)
|
||||
|
||||
provider_spec = providers[provider_id]
|
||||
cprint(f"Configuring API surface: {api}", "white", attrs=["bold"])
|
||||
cprint(
|
||||
f"Configuring API surface: {api} ({provider_id})", "white", attrs=["bold"]
|
||||
)
|
||||
config_type = instantiate_class_type(provider_spec.config_class)
|
||||
|
||||
try:
|
||||
existing_provider_config = config_type(**stub_config)
|
||||
except KeyError:
|
||||
existing_provider_config = None
|
||||
|
||||
provider_config = prompt_for_config(
|
||||
config_type,
|
||||
existing_provider_config,
|
||||
)
|
||||
print("")
|
||||
|
||||
|
|
|
@ -29,10 +29,9 @@ class ApiStart(Subcommand):
|
|||
|
||||
def _add_arguments(self):
|
||||
self.parser.add_argument(
|
||||
"--yaml-config",
|
||||
"yaml_config",
|
||||
type=str,
|
||||
help="Yaml config containing the API build configuration",
|
||||
required=True,
|
||||
)
|
||||
self.parser.add_argument(
|
||||
"--port",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue