conductor-oss / conductor-oss/python-sdk

Framework agents call the OpenAI Responses API regardless of the configured model

Đang mở
#482 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug
Ngôn ngữ chính
Python
Star
104
Fork
42
Merge trung bình
2 ngày 1 giờ
Pull request đã merge (30 ngày)
3

Mô tả

**In short:** run one of the `*_openai_runner_*` examples with an Anthropic model against a server that has no OpenAI key, and it fails — because this code path always calls OpenAI, whatever model you configured. It then prints `None` and exits 0, so nothing notices.

**Files:** `examples/agents/93_openai_runner_hello_world.py`, `94_openai_runner_tools.py`, `95_openai_runner_handoffs.py`, `96_openai_runner_streaming.py` (the `conductor.ai` `Runner` / framework-agent path)

## Symptom

With no `OPENAI_API_KEY` in the **server process's** environment:

```
$ CONDUCTOR_AGENT_LLM_MODEL=anthropic/claude-sonnet-4-6 python examples/agents/93_openai_runner_hello_world.py
Framework agent 'Assistant' execution FAILED
None
```

Both `93` and `96` exit 0 despite failing, so exit-code-based tooling — including `scripts/run_examples.sh` — scores them green.

## Cause

The framework-agent path calls the OpenAI Responses API regardless of the configured model. With an Anthropic model and no OpenAI key on the server, the `Assistant_llm` `LLM_CHAT_COMPLETE` task sends an empty key to OpenAI instead of routing to Anthropic:

```
Task execution failed: OpenAI Responses API call failed: Responses API failed with status 401:
{"error": {"message": "Incorrect API key provided: ''. You can find your API key at
https://platform.openai.com/account/api-keys.", "type": "invalid_request_error",
"param": null, "code": "invalid_api_key"}}
```

Read it back with:

```
curl -s localhost:8080/api/agent/executions?size=5
curl -s "localhost:8080/api/workflow/?includeTasks=true" # Assistant_llm -> reasonForIncompletion
```

Confirmed by changing **only** the server's environment, one server, everything else fixed:

| Server env | model | result |
|---|---|---|
| no `OPENAI_API_KEY` | `anthropic/claude-sonnet-4-6` | FAILED |
| no `OPENAI_API_KEY` | `anthropic/claude-opus-4-6` | FAILED |
| `OPENAI_API_KEY` present | `anthropic/claude-sonnet-4-6` | pass |
| `OPENAI_API_KEY` present | `anthropic/claude-opus-4-6` | pass |

Ruled out:

- the **client's** environment — fails with the client key set, passes with it unset
- `langchain-anthropic` being installed — passes with it uninstalled

Only the server's environment matters.

## Fix

Either drop the OpenAI dependency when the target model is not OpenAI, or fail with a message naming the missing key. Silent failure with `None` and exit 0 is the worst outcome.

## Verify

Start the server with no `OPENAI_API_KEY`, run `93` with an Anthropic model — it should either work or say why, and exit non-zero if it fails.

**Note:** These examples document `CONDUCTOR_AGENT_LLM_MODEL=openai/gpt-4o (or anthropic/claude-opus-4-6)`, so a user following the Anthropic option with an Anthropic-only server hits this immediately.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Start by reproducing the failure with examples/agents/93_openai_runner_hello_world.py and CONDUCTOR_AGENT_LLM_MODEL=anthropic/claude-sonnet-4-6 while the server lacks OPENAI_API_KEY. Read the conductor.ai Runner/framework-agent path, then inspect the execution and workflow responses for Assistant_llm and reasonForIncompletion. Done means the example routes to the configured model or reports the missing dependency clearly and exits non-zero.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
api, backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.