mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-29 13:04:51 +02:00
[Haik]: ckpt, dashboards subapp now done fully. Also made the resolve_sdk_env which is used now both for normal agents and quick llm calls, also modded the agents subapp to properly make use of this helper, also modded the run_browser_agent to inheret this from its parent agent
This commit is contained in:
@@ -1,20 +1,25 @@
|
||||
from backend.core.llm.get_llm_client import get_llm_client
|
||||
from backend.core.llm.resolve_sdk_env import resolve_sdk_env, SDK_ENV_DICT
|
||||
from typing import Optional
|
||||
from anthropic.types import Message as AnthropicMessage
|
||||
import anthropic
|
||||
|
||||
async def quick_llm_call(
|
||||
system: str,
|
||||
user_content: str,
|
||||
system_prompt: str,
|
||||
user_prompt: str,
|
||||
model: str,
|
||||
max_tokens: int,
|
||||
api_key: Optional[str] = None,
|
||||
nine_router_port: Optional[int] = None,
|
||||
) -> str:
|
||||
client = get_llm_client(api_key=api_key, nine_router_port=nine_router_port)
|
||||
env_dict: SDK_ENV_DICT = resolve_sdk_env(api_key=api_key, nine_router_port=nine_router_port)
|
||||
client = anthropic.AsyncAnthropic(
|
||||
api_key=env_dict["ANTHROPIC_API_KEY"],
|
||||
base_url=env_dict.get("ANTHROPIC_BASE_URL"),
|
||||
)
|
||||
resp: AnthropicMessage = await client.messages.create(
|
||||
model=model,
|
||||
max_tokens=max_tokens,
|
||||
system=system,
|
||||
messages=[{"role": "user", "content": user_content}],
|
||||
system=system_prompt,
|
||||
messages=[{"role": "user", "content": user_prompt}],
|
||||
)
|
||||
return resp.content[0].text.strip()
|
||||
@@ -1,7 +1,6 @@
|
||||
import anthropic
|
||||
import httpx
|
||||
from typeguard import typechecked
|
||||
from typing import Optional
|
||||
from typing import Optional, Literal, Dict
|
||||
from backend.core.generic_utils.assert_exactly_one_optional import assert_exactly_one_optional
|
||||
|
||||
@typechecked
|
||||
@@ -12,28 +11,23 @@ def p_check_9router(nine_router_port: int) -> bool:
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
SDK_ENV_DICT = Dict[Literal["ANTHROPIC_API_KEY", "ANTHROPIC_BASE_URL"], str]
|
||||
|
||||
@typechecked
|
||||
def get_llm_client(
|
||||
def resolve_sdk_env(
|
||||
api_key: Optional[str] = None,
|
||||
nine_router_port: Optional[int] = None,
|
||||
) -> anthropic.AsyncAnthropic:
|
||||
"""Build an AsyncAnthropic client.
|
||||
|
||||
Priority: API key → 9Router subscription
|
||||
"""
|
||||
) -> SDK_ENV_DICT:
|
||||
"""Resolve credentials into an env dict for ClaudeAgentOptions."""
|
||||
assert_exactly_one_optional([api_key, nine_router_port])
|
||||
|
||||
if api_key is not None:
|
||||
return anthropic.AsyncAnthropic(api_key=api_key)
|
||||
|
||||
elif nine_router_port is not None:
|
||||
if api_key:
|
||||
return {"ANTHROPIC_API_KEY": api_key}
|
||||
elif nine_router_port:
|
||||
if not p_check_9router(nine_router_port):
|
||||
raise ValueError("9Router is not running. Set an API key or connect a subscription.")
|
||||
return anthropic.AsyncAnthropic(
|
||||
api_key="9router",
|
||||
base_url=f"http://localhost:{nine_router_port}",
|
||||
)
|
||||
|
||||
return {
|
||||
"ANTHROPIC_API_KEY": "9router",
|
||||
"ANTHROPIC_BASE_URL": f"http://localhost:{nine_router_port}",
|
||||
}
|
||||
else:
|
||||
raise ValueError("No AI provider configured. Set an API key or a 9Router port.")
|
||||
raise ValueError("No AI provider configured. Set an API key or a 9router port")
|
||||
+1
@@ -34,6 +34,7 @@ async def run_browser_agent(
|
||||
tool_names.append(tool.to_sdk_args())
|
||||
|
||||
browser_config = ClaudeAgentOptions(
|
||||
env=parent.config.env,
|
||||
model=parent.model,
|
||||
system_prompt=BROWSER_AGENT_SYSTEM_PROMPT,
|
||||
tools=tool_names,
|
||||
|
||||
Reference in New Issue
Block a user