diff options
| author | CodeWithShreyans <[email protected]> | 2025-08-27 23:34:49 +0000 |
|---|---|---|
| committer | CodeWithShreyans <[email protected]> | 2025-08-27 23:34:49 +0000 |
| commit | 3a0e264b7eb18fe3b6d2de25e79879ada7c9f3ec (patch) | |
| tree | 4f2be5731860abece575bf4946ef881972502d73 /packages/openai-sdk-python/README.md | |
| parent | feat: support project-specific installation commands (#390) (diff) | |
| download | supermemory-3a0e264b7eb18fe3b6d2de25e79879ada7c9f3ec.tar.xz supermemory-3a0e264b7eb18fe3b6d2de25e79879ada7c9f3ec.zip | |
feat: openai js and python sdk utilities (#389)shreyans/08-27-feat_openai_js_and_python_sdk_utilities
needs testing
Diffstat (limited to 'packages/openai-sdk-python/README.md')
| -rw-r--r-- | packages/openai-sdk-python/README.md | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/packages/openai-sdk-python/README.md b/packages/openai-sdk-python/README.md new file mode 100644 index 00000000..fdc03b54 --- /dev/null +++ b/packages/openai-sdk-python/README.md @@ -0,0 +1,318 @@ +# Supermemory OpenAI Python SDK + +Enhanced OpenAI Python SDK with Supermemory infinite context integration. + +This package extends the official [OpenAI Python SDK](https://github.com/openai/openai-python) with [Supermemory](https://supermemory.ai) capabilities, enabling infinite context chat completions and memory management tools. + +## Features + +- 🚀 **Infinite Context**: Chat completions with unlimited conversation history +- 🧠**Memory Tools**: Search, add, and fetch user memories seamlessly +- 🔌 **Multiple Providers**: Support for OpenAI, Anthropic, Groq, and more +- 🛠**Function Calling**: Built-in memory tools for OpenAI function calling +- 🔒 **Type Safe**: Full TypeScript-style type hints for Python +- ⚡ **Async Support**: Full async/await support + +## Installation + +Install using uv (recommended): + +```bash +uv add supermemory-openai +``` + +Or with pip: + +```bash +pip install supermemory-openai +``` + +## Quick Start + +### Basic Chat Completion + +```python +import asyncio +from supermemory_openai import SupermemoryOpenAI, SupermemoryInfiniteChatConfigWithProviderName + +async def main(): + # Initialize client + client = SupermemoryOpenAI( + supermemory_api_key="your-supermemory-api-key", + config=SupermemoryInfiniteChatConfigWithProviderName( + provider_name="openai", + provider_api_key="your-openai-api-key", + ) + ) + + # Create chat completion + response = await client.chat_completion( + messages=[ + {"role": "user", "content": "Hello, how are you?"} + ], + model="gpt-4o" + ) + + print(response.choices[0].message.content) + +asyncio.run(main()) +``` + +### Using Memory Tools + +```python +import asyncio +from supermemory_openai import SupermemoryOpenAI, SupermemoryTools, SupermemoryInfiniteChatConfigWithProviderName + +async def main(): + # Initialize client and tools + client = SupermemoryOpenAI( + supermemory_api_key="your-supermemory-api-key", + config=SupermemoryInfiniteChatConfigWithProviderName( + provider_name="openai", + provider_api_key="your-openai-api-key", + ) + ) + + tools = SupermemoryTools( + api_key="your-supermemory-api-key", + config={"project_id": "my-project"} + ) + + # Chat with memory tools + response = await client.chat_completion( + messages=[ + { + "role": "system", + "content": "You are a helpful assistant with access to user memories." + }, + { + "role": "user", + "content": "Remember that I prefer tea over coffee" + } + ], + tools=tools.get_tool_definitions(), + model="gpt-4o" + ) + + print(response.choices[0].message.content) + +asyncio.run(main()) +``` + +## Configuration + +### Provider Configuration + +#### Using Provider Names + +```python +from supermemory_openai import SupermemoryInfiniteChatConfigWithProviderName + +config = SupermemoryInfiniteChatConfigWithProviderName( + provider_name="openai", # or "anthropic", "groq", "openrouter", etc. + provider_api_key="your-provider-api-key", + headers={"custom-header": "value"} # optional +) +``` + +#### Using Custom URLs + +```python +from supermemory_openai import SupermemoryInfiniteChatConfigWithProviderUrl + +config = SupermemoryInfiniteChatConfigWithProviderUrl( + provider_url="https://your-custom-endpoint.com/v1", + provider_api_key="your-provider-api-key", + headers={"custom-header": "value"} # optional +) +``` + +### Supported Providers + +- `openai` - OpenAI API +- `anthropic` - Anthropic Claude +- `openrouter` - OpenRouter +- `deepinfra` - DeepInfra +- `groq` - Groq +- `google` - Google AI +- `cloudflare` - Cloudflare Workers AI + +## Memory Tools + +### SupermemoryTools Class + +```python +from supermemory_openai import SupermemoryTools + +tools = SupermemoryTools( + api_key="your-supermemory-api-key", + config={ + "project_id": "my-project", # or use container_tags + "base_url": "https://custom-endpoint.com", # optional + } +) + +# Search memories +result = await tools.search_memories( + information_to_get="user preferences", + limit=10, + include_full_docs=True +) + +# Add memory +result = await tools.add_memory( + memory="User prefers tea over coffee" +) + +# Fetch specific memory +result = await tools.fetch_memory( + memory_id="memory-id-here" +) +``` + +### Individual Tools + +```python +from supermemory_openai import ( + create_search_memories_tool, + create_add_memory_tool, + create_fetch_memory_tool +) + +search_tool = create_search_memories_tool("your-api-key") +add_tool = create_add_memory_tool("your-api-key") +fetch_tool = create_fetch_memory_tool("your-api-key") +``` + +### Function Calling Integration + +```python +from supermemory_openai import execute_memory_tool_calls + +# After getting tool calls from OpenAI +if response.choices[0].message.tool_calls: + tool_results = await execute_memory_tool_calls( + api_key="your-supermemory-api-key", + tool_calls=response.choices[0].message.tool_calls, + config={"project_id": "my-project"} + ) + + # Add tool results to conversation + messages.append(response.choices[0].message) + messages.extend(tool_results) +``` + +## API Reference + +### SupermemoryOpenAI + +Enhanced OpenAI client with infinite context support. + +#### Constructor + +```python +SupermemoryOpenAI( + supermemory_api_key: str, + config: Optional[SupermemoryInfiniteChatConfig] = None +) +``` + +#### Methods + +- `chat_completion()` - Create chat completion with simplified interface +- `create_chat_completion()` - Create chat completion with full OpenAI parameters + +### SupermemoryTools + +Memory management tools for function calling. + +#### Constructor + +```python +SupermemoryTools( + api_key: str, + config: Optional[SupermemoryToolsConfig] = None +) +``` + +#### Methods + +- `get_tool_definitions()` - Get OpenAI function definitions +- `search_memories()` - Search user memories +- `add_memory()` - Add new memory +- `fetch_memory()` - Fetch specific memory by ID +- `execute_tool_call()` - Execute individual tool call + +## Error Handling + +```python +try: + response = await client.chat_completion( + messages=[{"role": "user", "content": "Hello"}], + model="gpt-4o" + ) +except Exception as e: + print(f"Error: {e}") +``` + +## Environment Variables + +Set these environment variables for testing: + +- `SUPERMEMORY_API_KEY` - Your Supermemory API key +- `PROVIDER_API_KEY` - Your AI provider API key +- `PROVIDER_NAME` - Provider name (default: "openai") +- `PROVIDER_URL` - Custom provider URL (optional) +- `MODEL_NAME` - Model to use (default: "gpt-4o-mini") +- `SUPERMEMORY_BASE_URL` - Custom Supermemory base URL (optional) + +## Development + +### Setup + +```bash +# Install uv +curl -LsSf https://astral.sh/uv/install.sh | sh + +# Clone and setup +git clone <repository-url> +cd packages/openai-sdk-python +uv sync --dev +``` + +### Testing + +```bash +# Run tests +uv run pytest + +# Run with coverage +uv run pytest --cov=supermemory_openai + +# Run specific test file +uv run pytest tests/test_infinite_chat.py +``` + +### Type Checking + +```bash +uv run mypy src/supermemory_openai +``` + +### Formatting + +```bash +uv run black src/ tests/ +uv run isort src/ tests/ +``` + +## License + +MIT License - see LICENSE file for details. + +## Links + +- [Supermemory](https://supermemory.ai) - Infinite context memory platform +- [OpenAI Python SDK](https://github.com/openai/openai-python) - Official OpenAI Python library +- [Documentation](https://docs.supermemory.ai) - Full API documentation |