LangChain integration for AstarCloud chat models
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_astarcloud-0.1.13.tar.gz.
File metadata
- Download URL: langchain_astarcloud-0.1.13.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0676e96f59d843ed877575b5ff1d95628c985a685fb4044c1bd753ce179c295a
|
|
| MD5 |
63a12f02460f5f71b4ad10b9b74c48d6
|
|
| BLAKE2b-256 |
5aac6c54f8b8db9a4a52db26745d51656f055c77c9a1c819791553bd7fd0505f
|
File details
Details for the file langchain_astarcloud-0.1.13-py3-none-any.whl.
File metadata
- Download URL: langchain_astarcloud-0.1.13-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72a3cc08fb92ccfee4e88caacaeca92e51466e3ea341a7588e6ea9452b58a467
|
|
| MD5 |
b7896696a3fa9976dc847842b3aefcd0
|
|
| BLAKE2b-256 |
acc2b3589384e41a7237e41dfd27a3711c369bd21f1334af60d37abd05bf30d7
|