Name | metorial-openai JSON |
Version |
1.0.0rc2
JSON |
| download |
home_page | None |
Summary | OpenAI provider for Metorial |
upload_time | 2025-07-26 12:17:49 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | MIT |
keywords |
ai
llm
metorial
openai
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# metorial-openai
OpenAI provider integration for Metorial - enables using Metorial tools with OpenAI's language models through function calling.
## Installation
```bash
pip install metorial-openai
# or
uv add metorial-openai
# or
poetry add metorial-openai
```
## Features
- 🤖 **OpenAI Integration**: Full support for GPT-4, GPT-3.5, and other OpenAI models
- 🛠️ **Function Calling**: Native OpenAI function calling support
- 📡 **Session Management**: Automatic tool lifecycle handling
- 🔄 **Format Conversion**: Converts Metorial tools to OpenAI function format
- ✅ **Strict Mode**: Optional strict parameter validation
- ⚡ **Async Support**: Full async/await support
## Usage
### Basic Usage
```python
import asyncio
from openai import OpenAI
from metorial import Metorial
from metorial_openai import MetorialOpenAISession
async def main():
# Initialize clients
metorial = Metorial(api_key="your-metorial-api-key")
openai_client = OpenAI(api_key="your-openai-api-key")
# Create session with your server deployments
async with metorial.session(["your-server-deployment-id"]) as session:
# Create OpenAI-specific wrapper
openai_session = MetorialOpenAISession(session.tool_manager)
messages = [
{"role": "user", "content": "What are the latest commits?"}
]
response = openai_client.chat.completions.create(
model="gpt-4",
messages=messages,
tools=openai_session.tools
)
# Handle tool calls
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
tool_responses = await openai_session.call_tools(tool_calls)
# Add to conversation
messages.append({
"role": "assistant",
"tool_calls": tool_calls
})
messages.extend(tool_responses)
# Continue conversation...
asyncio.run(main())
```
### Using Convenience Functions
```python
from metorial_openai import build_openai_tools, call_openai_tools
async def example_with_functions():
# Get tools in OpenAI format
tools = build_openai_tools(tool_manager)
# Call tools from OpenAI response
tool_messages = await call_openai_tools(tool_manager, tool_calls)
```
## API Reference
### `MetorialOpenAISession`
Main session class for OpenAI integration.
```python
session = MetorialOpenAISession(tool_manager)
```
**Properties:**
- `tools`: List of tools in OpenAI function calling format
**Methods:**
- `async call_tools(tool_calls)`: Execute tool calls and return tool messages
### `build_openai_tools(tool_mgr)`
Build OpenAI-compatible tool definitions.
**Returns:** List of tool definitions in OpenAI format
### `call_openai_tools(tool_mgr, tool_calls)`
Execute tool calls from OpenAI response.
**Returns:** List of tool messages
## Tool Format
Tools are converted to OpenAI's function calling format:
```python
{
"type": "function",
"function": {
"name": "tool_name",
"description": "Tool description",
"parameters": {
"type": "object",
"properties": {...},
"required": [...]
}
}
}
```
## Supported Models
All OpenAI models that support function calling:
- `gpt-4o`: Latest GPT-4 Omni model
- `gpt-4o-mini`: Smaller, faster GPT-4 Omni model
- `gpt-4-turbo`: GPT-4 Turbo
- `gpt-4`: Standard GPT-4
- `gpt-3.5-turbo`: GPT-3.5 Turbo
- And other function calling enabled models
## Error Handling
```python
try:
tool_messages = await openai_session.call_tools(tool_calls)
except Exception as e:
print(f"Tool execution failed: {e}")
```
Tool errors are returned as tool messages with error content.
## Dependencies
- `openai>=1.0.0`
- `metorial-mcp-session>=1.0.0`
- `typing-extensions>=4.0.0`
## License
MIT License - see [LICENSE](../../LICENSE) file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "metorial-openai",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "ai, llm, metorial, openai",
"author": null,
"author_email": "Metorial Team <support@metorial.com>",
"download_url": "https://files.pythonhosted.org/packages/7a/35/fc5606a8e9f6f52766f29be0ebd58634c920efac26e2dfcf536dc4834369/metorial_openai-1.0.0rc2.tar.gz",
"platform": null,
"description": "# metorial-openai\n\nOpenAI provider integration for Metorial - enables using Metorial tools with OpenAI's language models through function calling.\n\n## Installation\n\n```bash\npip install metorial-openai\n# or\nuv add metorial-openai\n# or\npoetry add metorial-openai\n```\n\n## Features\n\n- \ud83e\udd16 **OpenAI Integration**: Full support for GPT-4, GPT-3.5, and other OpenAI models\n- \ud83d\udee0\ufe0f **Function Calling**: Native OpenAI function calling support\n- \ud83d\udce1 **Session Management**: Automatic tool lifecycle handling\n- \ud83d\udd04 **Format Conversion**: Converts Metorial tools to OpenAI function format\n- \u2705 **Strict Mode**: Optional strict parameter validation\n- \u26a1 **Async Support**: Full async/await support\n\n## Usage\n\n### Basic Usage\n\n```python\nimport asyncio\nfrom openai import OpenAI\nfrom metorial import Metorial\nfrom metorial_openai import MetorialOpenAISession\n\nasync def main():\n # Initialize clients\n metorial = Metorial(api_key=\"your-metorial-api-key\")\n openai_client = OpenAI(api_key=\"your-openai-api-key\")\n \n # Create session with your server deployments\n async with metorial.session([\"your-server-deployment-id\"]) as session:\n # Create OpenAI-specific wrapper\n openai_session = MetorialOpenAISession(session.tool_manager)\n \n messages = [\n {\"role\": \"user\", \"content\": \"What are the latest commits?\"}\n ]\n \n response = openai_client.chat.completions.create(\n model=\"gpt-4\",\n messages=messages,\n tools=openai_session.tools\n )\n \n # Handle tool calls\n tool_calls = response.choices[0].message.tool_calls\n if tool_calls:\n tool_responses = await openai_session.call_tools(tool_calls)\n \n # Add to conversation\n messages.append({\n \"role\": \"assistant\",\n \"tool_calls\": tool_calls\n })\n messages.extend(tool_responses)\n \n # Continue conversation...\n\nasyncio.run(main())\n```\n\n### Using Convenience Functions\n\n```python\nfrom metorial_openai import build_openai_tools, call_openai_tools\n\nasync def example_with_functions():\n # Get tools in OpenAI format\n tools = build_openai_tools(tool_manager)\n \n # Call tools from OpenAI response\n tool_messages = await call_openai_tools(tool_manager, tool_calls)\n```\n\n## API Reference\n\n### `MetorialOpenAISession`\n\nMain session class for OpenAI integration.\n\n```python\nsession = MetorialOpenAISession(tool_manager)\n```\n\n**Properties:**\n- `tools`: List of tools in OpenAI function calling format\n\n**Methods:**\n- `async call_tools(tool_calls)`: Execute tool calls and return tool messages\n\n### `build_openai_tools(tool_mgr)`\n\nBuild OpenAI-compatible tool definitions.\n\n**Returns:** List of tool definitions in OpenAI format\n\n### `call_openai_tools(tool_mgr, tool_calls)`\n\nExecute tool calls from OpenAI response.\n\n**Returns:** List of tool messages\n\n## Tool Format\n\nTools are converted to OpenAI's function calling format:\n\n```python\n{\n \"type\": \"function\",\n \"function\": {\n \"name\": \"tool_name\",\n \"description\": \"Tool description\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {...},\n \"required\": [...]\n }\n }\n}\n```\n\n## Supported Models\n\nAll OpenAI models that support function calling:\n\n- `gpt-4o`: Latest GPT-4 Omni model\n- `gpt-4o-mini`: Smaller, faster GPT-4 Omni model\n- `gpt-4-turbo`: GPT-4 Turbo\n- `gpt-4`: Standard GPT-4\n- `gpt-3.5-turbo`: GPT-3.5 Turbo\n- And other function calling enabled models\n\n## Error Handling\n\n```python\ntry:\n tool_messages = await openai_session.call_tools(tool_calls)\nexcept Exception as e:\n print(f\"Tool execution failed: {e}\")\n```\n\nTool errors are returned as tool messages with error content.\n\n## Dependencies\n\n- `openai>=1.0.0`\n- `metorial-mcp-session>=1.0.0` \n- `typing-extensions>=4.0.0`\n\n## License\n\nMIT License - see [LICENSE](../../LICENSE) file for details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "OpenAI provider for Metorial",
"version": "1.0.0rc2",
"project_urls": {
"Documentation": "https://metorial.com/docs",
"Homepage": "https://metorial.com",
"Repository": "https://github.com/metorial/metorial-enterprise"
},
"split_keywords": [
"ai",
" llm",
" metorial",
" openai"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e67b7efdb75243a97e8c459f73c3dfc4ecaabbbc62821acb57954562ed5ee566",
"md5": "f2ed76ed9764cd1939c7c40d6c1944e4",
"sha256": "b6945cfddade2792b4c010b3b1154da4e148d0d05f0a6262a8780ef7cf4b338e"
},
"downloads": -1,
"filename": "metorial_openai-1.0.0rc2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f2ed76ed9764cd1939c7c40d6c1944e4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 4723,
"upload_time": "2025-07-26T12:17:45",
"upload_time_iso_8601": "2025-07-26T12:17:45.781129Z",
"url": "https://files.pythonhosted.org/packages/e6/7b/7efdb75243a97e8c459f73c3dfc4ecaabbbc62821acb57954562ed5ee566/metorial_openai-1.0.0rc2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7a35fc5606a8e9f6f52766f29be0ebd58634c920efac26e2dfcf536dc4834369",
"md5": "fd225fdfc60ef620f3360695cacf85ba",
"sha256": "6cb4368f2d7f5f42e28e3e3a8c9629dab084b4cab6fe9d24e9fd8d2f91ac84be"
},
"downloads": -1,
"filename": "metorial_openai-1.0.0rc2.tar.gz",
"has_sig": false,
"md5_digest": "fd225fdfc60ef620f3360695cacf85ba",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 5775,
"upload_time": "2025-07-26T12:17:49",
"upload_time_iso_8601": "2025-07-26T12:17:49.499813Z",
"url": "https://files.pythonhosted.org/packages/7a/35/fc5606a8e9f6f52766f29be0ebd58634c920efac26e2dfcf536dc4834369/metorial_openai-1.0.0rc2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-26 12:17:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "metorial",
"github_project": "metorial-enterprise",
"github_not_found": true,
"lcname": "metorial-openai"
}