LangChain AstarCloud
A LangChain integration for AstarCloud chat models, providing a drop-in replacement for other chat model providers like OpenAI and Groq.
Installation
pip install langchain-astarcloud
Quick Start
from langchain_astarcloud import ChatAstarCloud
# Initialize the model
llm = ChatAstarCloud(
model="gpt-4.1",
api_key="your-api-key" # or set ASTARCLOUD_API_KEY env var
)
# Use it like any other LangChain chat model
response = llm.invoke("Hello, how are you?")
print(response.content)
Features
- Drop-in replacement: Works seamlessly with existing LangChain and LangGraph applications
- Async support: Full async/await support for better performance
- Streaming: Real-time response streaming
- Tool calling: Support for function/tool calling on compatible models
- Type hints: Full type safety with modern Python typing
Supported Models
The following models are available:
gpt-4.1- Latest GPT-4 model with tool calling supportgpt-4.1-mini- Faster, more cost-effective variant with tool callinggpt-4.1-nano- Ultra-fast model for simple tasks with tool callingastar-gpt-4.1- AstarCloud's optimized variant with tool calling
Usage Examples
Basic Chat
from langchain_astarcloud import ChatAstarCloud
llm = ChatAstarCloud(model="gpt-4.1", api_key="sk-...")
response = llm.invoke("What's the capital of Norway?")
print(response.content)
With LangChain Expression Language (LCEL)
from langchain_core.prompts import ChatPromptTemplate
from langchain_astarcloud import ChatAstarCloud
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
("human", "{question}")
])
llm = ChatAstarCloud(model="gpt-4.1")
chain = prompt | llm
response = chain.invoke({"question": "Explain quantum computing"})
Streaming Responses
from langchain_astarcloud import ChatAstarCloud
llm = ChatAstarCloud(model="gpt-4.1")
for chunk in llm.stream("Write a short story"):
print(chunk.content, end="", flush=True)
Async Usage
import asyncio
from langchain_astarcloud import ChatAstarCloud
async def main():
llm = ChatAstarCloud(model="gpt-4.1")
response = await llm.ainvoke("Hello!")
print(response.content)
# Async streaming
async for chunk in llm.astream("Tell me a joke"):
print(chunk.content, end="", flush=True)
asyncio.run(main())
Tool Calling
from langchain_core.tools import tool
from langchain_astarcloud import ChatAstarCloud
@tool
def get_weather(city: str) -> str:
"""Get the weather for a city."""
# Your weather API logic here
return f"The weather in {city} is sunny and 22°C"
llm = ChatAstarCloud(model="gpt-4.1").bind_tools([get_weather])
response = llm.invoke("What's the weather in Oslo?")
print(response.content)
print(response.tool_calls)
With LangGraph
from langgraph.prebuilt import ToolNode
from langchain_astarcloud import ChatAstarCloud
llm = ChatAstarCloud(model="gpt-4.1").bind_tools([get_weather])
# LangGraph treats it like any other chat model
tool_node = ToolNode([get_weather])
result = llm.invoke("What's the weather in Bergen?")
Configuration
Environment Variables
Set your API key as an environment variable:
export ASTARCLOUD_API_KEY="your-api-key"
Constructor Parameters
llm = ChatAstarCloud(
model="gpt-4.1", # Required: Model name
api_key="your-key", # Optional: API key (uses env var if not provided)
api_base="https://api.astarcloud.no", # Optional: API base URL
timeout=30.0, # Optional: Request timeout in seconds
temperature=0.7, # Optional: Sampling temperature
max_tokens=1000, # Optional: Maximum tokens to generate
# ... other model parameters
)
Error Handling
from langchain_astarcloud import ChatAstarCloud
llm = ChatAstarCloud(model="gpt-4.1")
try:
# This will raise an error for unsupported models
llm_with_tools = llm.bind_tools([some_tool])
if llm.model not in {"gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano", "astar-gpt-4.1"}:
print("Tools not supported for this model")
except ValueError as e:
print(f"Error: {e}")
Development
To contribute to this project:
# Clone the repository
git clone https://github.com/ASTAR-CLOUD/langchain_astarcloud.git
cd langchain_astarcloud
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
isort .
# Type checking
mypy langchain_astarcloud
License
This project is licensed under the MIT License.
Support
For support or questions:
- Open an issue on GitHub
- Contact AstarCloud support
Metadata
Release files for langchain-astarcloud 0.1.22
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| langchain_astarcloud-0.1.22.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langchain_astarcloud-0.1.22-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.0 kB
Release files / langchain_astarcloud-0.1.22.tar.gz
| Download URL | langchain_astarcloud-0.1.22.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4178eb1f310abd614f36435ba6d3121b2a6f3e9f04e6542a1ee0e42147e4d5b
|
|
BLAKE2b-256 checksum How to use checksums |
fe00398d9f34ff43a0e3f51cb43e91d099acafe2b84ed9e88f51d999af8aa25b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|
Release files / langchain_astarcloud-0.1.22-py3-none-any.whl
| Download URL | langchain_astarcloud-0.1.22-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0bc89eb405b1616534f1232f3364cf4d9ad1306b9242cf0fff51b8390ce6a06c
|
|
BLAKE2b-256 checksum How to use checksums |
b17a0430525a5a0f062d3b7a3b52822a4a2cbf7d6a4485b608f6e5777f212e9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|