Skip to content

Commit 5588bcb

Browse files
committed
🐛 FIX: Types
1 parent 1ff235a commit 5588bcb

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

langbase/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
from .types import (
4646
ChoiceGenerate,
4747
Message,
48+
MessageContentItem,
4849
PipeBaseOptions,
4950
PipeBaseResponse,
5051
PipeCreateOptions,

langbase/primitives/agent.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
Agent API client for the Langbase SDK.
33
"""
44

5-
from typing import Any, Dict, List, Optional, Union, overload
5+
from typing import Any, Dict, List, Literal, Optional, Union, overload
66

77
from langbase.constants import AGENT_RUN_ENDPOINT
88
from langbase.request import Request
9+
from langbase.types import McpServerSchema, Message, ToolChoice, Tools
910
from langbase.utils import clean_null_values
1011

1112

@@ -17,7 +18,7 @@ def __init__(self, parent):
1718
@overload
1819
def run(
1920
self,
20-
input: Union[str, List[Dict[str, Any]]],
21+
input: Union[str, List[Message]],
2122
model: str,
2223
api_key: str,
2324
instructions: Optional[str] = None,
@@ -27,14 +28,14 @@ def run(
2728
presence_penalty: Optional[float] = None,
2829
frequency_penalty: Optional[float] = None,
2930
stop: Optional[List[str]] = None,
30-
tools: Optional[List[Dict[str, Any]]] = None,
31-
tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
31+
tools: Optional[List[Tools]] = None,
32+
tool_choice: Optional[Union[Literal["auto", "required"], ToolChoice]] = None,
3233
parallel_tool_calls: Optional[bool] = None,
3334
reasoning_effort: Optional[str] = None,
3435
max_completion_tokens: Optional[int] = None,
3536
response_format: Optional[Dict[str, Any]] = None,
3637
custom_model_params: Optional[Dict[str, Any]] = None,
37-
mcp_servers: Optional[List[Dict[str, Any]]] = None,
38+
mcp_servers: List[McpServerSchema] = None,
3839
*,
3940
stream: bool = True,
4041
) -> Any:
@@ -44,7 +45,7 @@ def run(
4445
@overload
4546
def run(
4647
self,
47-
input: Union[str, List[Dict[str, Any]]],
48+
input: Union[str, List[Message]],
4849
model: str,
4950
api_key: str,
5051
instructions: Optional[str] = None,
@@ -54,22 +55,22 @@ def run(
5455
presence_penalty: Optional[float] = None,
5556
frequency_penalty: Optional[float] = None,
5657
stop: Optional[List[str]] = None,
57-
tools: Optional[List[Dict[str, Any]]] = None,
58-
tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
58+
tools: Optional[List[Tools]] = None,
59+
tool_choice: Optional[Union[Literal["auto", "required"], ToolChoice]] = None,
5960
parallel_tool_calls: Optional[bool] = None,
6061
reasoning_effort: Optional[str] = None,
6162
max_completion_tokens: Optional[int] = None,
6263
response_format: Optional[Dict[str, Any]] = None,
6364
custom_model_params: Optional[Dict[str, Any]] = None,
64-
mcp_servers: Optional[List[Dict[str, Any]]] = None,
65+
mcp_servers: List[McpServerSchema] = None,
6566
stream: bool = False,
6667
) -> Dict[str, Any]:
6768
"""Non-stream overload - returns dict response when stream=False"""
6869
...
6970

7071
def run(
7172
self,
72-
input: Union[str, List[Dict[str, Any]]],
73+
input: Union[str, List[Message]],
7374
model: str,
7475
api_key: str,
7576
instructions: Optional[str] = None,
@@ -79,14 +80,14 @@ def run(
7980
presence_penalty: Optional[float] = None,
8081
frequency_penalty: Optional[float] = None,
8182
stop: Optional[List[str]] = None,
82-
tools: Optional[List[Dict[str, Any]]] = None,
83-
tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
83+
tools: Optional[List[Tools]] = None,
84+
tool_choice: Optional[Union[Literal["auto", "required"], ToolChoice]] = None,
8485
parallel_tool_calls: Optional[bool] = None,
8586
reasoning_effort: Optional[str] = None,
8687
max_completion_tokens: Optional[int] = None,
8788
response_format: Optional[Dict[str, Any]] = None,
8889
custom_model_params: Optional[Dict[str, Any]] = None,
89-
mcp_servers: Optional[List[Dict[str, Any]]] = None,
90+
mcp_servers: List[McpServerSchema] = None,
9091
stream: bool = False,
9192
) -> Union[Dict[str, Any], Any]:
9293
"""

langbase/primitives/pipes.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from langbase.constants import PIPE_DETAIL_ENDPOINT, PIPE_RUN_ENDPOINT, PIPES_ENDPOINT
88
from langbase.request import Request
99
from langbase.types import (
10+
Message,
1011
PipeCreateResponse,
1112
PipeListResponse,
1213
PipeUpdateResponse,
@@ -65,9 +66,9 @@ def update(self, name: str, **kwargs) -> PipeUpdateResponse:
6566

6667
def run(
6768
self,
68-
name: Optional[str] = None,
69+
name: str = None,
6970
api_key: Optional[str] = None,
70-
messages: Optional[List[Dict[str, Any]]] = None,
71+
messages: Optional[List[Message]] = None,
7172
variables: Optional[List[Dict[str, str]]] = None,
7273
thread_id: Optional[str] = None,
7374
raw_response: Optional[bool] = None,

langbase/types.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,18 @@ class ToolChoice(TypedDict):
7979
function: Dict[str, str]
8080

8181

82+
class MessageContentItem(TypedDict, total=False):
83+
type: str
84+
text: Optional[str]
85+
image_url: Optional[Dict[str, str]]
86+
cache_control: Optional[Dict[str, str]]
87+
88+
8289
class Message(TypedDict, total=False):
8390
"""Basic message structure."""
8491

8592
role: Role
86-
content: Optional[str]
93+
content: Union[str, List[MessageContentItem], None]
8794
name: Optional[str]
8895
tool_call_id: Optional[str]
8996
tool_calls: Optional[List[ToolCall]]

0 commit comments

Comments
 (0)