Observed since 20 Oct, 21:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentcc
Python SDK for the AgentCC LLM Gateway — OpenAI-compatible, type-safe, with guardrails and observability
Python SDK for the AgentCC gateway — OpenAI-compatible, typed, with first-class streaming, tools, structured output, guardrails, and cost tracking.
pip install agentcc
Python 3.9+ required.
import os
from agentcc import AgentCC
client = AgentCC(
api_key=os.environ["AGENTCC_API_KEY"],
base_url="https://gateway.futureagi.com/v1",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Summarize the theory of relativity."}],
)
print(response.choices[0].message.content)
The AgentCC client reads AGENTCC_API_KEY and AGENTCC_BASE_URL from the environment when those parameters are not passed explicitly.
# stream=True returns an iterator of ChatCompletionChunk objects
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Write a haiku about programming."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)
# Alternatively, use the stream() context manager for convenience helpers
with client.chat.completions.stream(
model="gpt-4o",
messages=[{"role": "user", "content": "Write a haiku about programming."}],
) as s:
for text in s.text_stream:
print(text, end="", flush=True)
print(f"\n[{s.get_final_completion().usage.total_tokens} tokens]")
import json
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
},
}
]
messages = [{"role": "user", "content": "What's the weather in Paris?"}]
response = client.chat.completions.create(model="gpt-4o", messages=messages, tools=tools)
if response.choices[0].message.tool_calls:
for tc in response.choices[0].message.tool_calls:
args = json.loads(tc.function.arguments)
# call your function, then send the result back as a tool message
import asyncio
from agentcc import AsyncAgentCC
async def main():
client = AsyncAgentCC(
api_key=os.environ["AGENTCC_API_KEY"],
base_url="https://gateway.futureagi.com/v1",
)
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
await client.close()
asyncio.run(main())
| Resource | Access path |
|---|---|
| Chat completions | client.chat.completions |
| Legacy completions | client.completions |
| Embeddings | client.embeddings |
| Images | client.images |
| Audio | client.audio |
| Models | client.models |
| Moderations | client.moderations |
| Files | client.files |
| Batches | client.batches |
| Rerank | client.rerank |
| Responses | client.responses |
| Variable | Description |
|---|---|
AGENTCC_API_KEY | API key (sk-agentcc-*) |
AGENTCC_BASE_URL | Gateway base URL (e.g. https://gateway.futureagi.com/v1) |
Apache 2.0 — see LICENSE.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
anyioEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | anyio<5.0,>=4.0 | runtime |
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | httpx<1.0,>=0.25.0 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pydantic<3.0,>=2.0 | runtime |
typing-extensionsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | typing-extensions>=4.7 | runtime |
jsonschemaEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | jsonschema>=4.0; extra == "all" | runtime |
langchain-coreEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | langchain-core>=0.1; extra == "all" | runtime |
llama-index-coreEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | llama-index-core>=0.10; extra == "all" | runtime |
opentelemetry-apiEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | opentelemetry-api>=1.0; extra == "all" | runtime |
opentelemetry-sdkEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | opentelemetry-sdk>=1.0; extra == "all" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23; extra == "all" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0; extra == "all" | runtime |
respxEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | respx>=0.21; extra == "all" | runtime |
tiktokenEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | tiktoken>=0.5; extra == "all" | runtime |
jsonschemaEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | jsonschema>=4.0; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.8; extra == "dev" | runtime |
opentelemetry-apiEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | opentelemetry-api>=1.0; extra == "dev" | runtime |
opentelemetry-sdkEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | opentelemetry-sdk>=1.0; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0; extra == "dev" | runtime |
respxEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | respx>=0.21; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.3; extra == "dev" | runtime |
tiktokenEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | tiktoken>=0.5; extra == "dev" | runtime |
langchain-coreEnvironment{
"extras": "",
"marker": "extra == \"langchain\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | langchain-core>=0.1; extra == "langchain" | runtime |
llama-index-coreEnvironment{
"extras": "",
"marker": "extra == \"llamaindex\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | llama-index-core>=0.10; extra == "llamaindex" | runtime |
opentelemetry-apiEnvironment{
"extras": "",
"marker": "extra == \"otel\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | opentelemetry-api>=1.0; extra == "otel" | runtime |
opentelemetry-sdkEnvironment{
"extras": "",
"marker": "extra == \"otel\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | opentelemetry-sdk>=1.0; extra == "otel" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23; extra == "testing" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0; extra == "testing" | runtime |
respxEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | respx>=0.21; extra == "testing" | runtime |
tiktokenEnvironment{
"extras": "",
"marker": "extra == \"tiktoken\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | tiktoken>=0.5; extra == "tiktoken" | runtime |
jsonschemaEnvironment{
"extras": "",
"marker": "extra == \"validation\"",
"requires_python": ">=3.9",
"evaluation": "NOT_EVALUATED"
} | jsonschema>=4.0; extra == "validation" | runtime |
bdist_wheel · 89.08 KB · Python py3
sdist · 131.79 KB · Python source
Shared repository data · GitHub
Observed since 20 Oct, 21:37 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:ca5455e6117127ba5df06a5d0bf4d34b652eadf752b8afdce7fa2b34b6bfec27