OpenAI Eines
L’adaptador OpenAI permet als models GPT interactuar amb Asset Core mitjançant la invocació de funcions, utilitzant la mateixa superfície d’eina que altres adaptadors.
Requisits previs
- Daemons d’Asset Core en execució
- Accés a l’API d’OpenAI
- Python o Rust per a la integració
Pas 1 - Obtenir definicions d’eines
L’adaptador proporciona definicions d’eines compatibles amb OpenAI:
use assetcore_adapters::openai::tools::OpenAiToolDefinition;
let tools = OpenAiToolDefinition::all();
En Python, formataríeu aquests com a especificacions de funció per a l’API d’OpenAI.
Pas 2 - Definir les eines per OpenAI
Format d’eines per a l’API de Completions de Chat d’OpenAI:
tools = [
{
"type": "function",
"function": {
"name": "assetcore_commit",
"description": "Submit a transaction to Asset Core",
"parameters": {
"type": "object",
"properties": {
"operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {"type": "string"},
"args": {"type": "object"}
},
"required": ["op", "args"]
},
"description": "List of operations to execute"
},
"idempotency_key": {
"type": "string",
"description": "Optional deduplication key"
}
},
"required": ["operations"]
}
}
},
{
"type": "function",
"function": {
"name": "assetcore_write_health",
"description": "Check Asset Core write daemon health",
"parameters": {"type": "object", "properties": {}}
}
}
]
Pas 3 - Executar trucades d’eines
Quan GPT retorna una crida d’eina, executa-la contra Asset Core:
import httpx
import json
async def execute_tool(tool_name: str, arguments: dict) -> str:
if tool_name == "assetcore_commit":
async with httpx.AsyncClient() as client:
response = await client.post(
"http://localhost:8080/v1/commit",
json=arguments
)
return response.text
elif tool_name == "assetcore_write_health":
async with httpx.AsyncClient() as client:
response = await client.get(
"http://localhost:8080/v1/health"
)
return response.text
else:
return json.dumps({"error": f"Unknown tool: {tool_name}"})
Pas 4 - Completar el cicle de conversa
Integrar-se amb l’API d’OpenAI:
from openai import OpenAI
client = OpenAI()
messages = [
{"role": "user", "content": "Create a container with ID 1001"}
]
response = client.chat.completions.create(
model="gpt-4",
messages=messages,
tools=tools,
tool_choice="auto"
)
# Check for tool calls
if response.choices[0].message.tool_calls:
for tool_call in response.choices[0].message.tool_calls:
result = await execute_tool(
tool_call.function.name,
json.loads(tool_call.function.arguments)
)
# Add tool result to messages
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
# Get final response
final_response = client.chat.completions.create(
model="gpt-4",
messages=messages
)
Pas 5 - Utilitzeu l’executor Rust
Per a les aplicacions Rust, utilitzeu l’executor integrat:
use assetcore_adapters::openai::executor::OpenAiToolExecutor;
use assetcore_adapters::http_client::DaemonClient;
let client = DaemonClient::new(
"http://localhost:8080",
"http://localhost:8081"
);
let executor = OpenAiToolExecutor::new(client);
// Execute a tool call
let result = executor.execute(
"assetcore_commit",
serde_json::json!({
"operations": [
{
"op": "CreateContainer",
"args": {
"container_id": 1001,
"kind": "Standard"
}
}
]
})
).await?;
Resolució de problemes
Arguments de funció no vàlids
GPT pot generar arguments que no coincideixen amb l’esquema. Valideu abans de l’execució i torneu missatges d’error clars.
Limitació de taxa
OpenAI té límits de taxa. Implementa retrocessos i reintents per a l’ús en producció.
Ordre de crida d’eines
GPT pot sol·licitar múltiples crides d’eines en paral·lel. Els compromisos d’Asset Core són seqüencials; executa’ls en ordre.
Properes passes
- Agents Overview - Arquitectura i disseny
- Integració MCP - Protocol alternatiu
- Gemini - integració del model de Google