memothon

Why is Anthropic breaking compatibility with OpenAI?

The Claude API has a few features that are very similar to functionality in OpenAI's API, but break compatibility in subtle ways.

Image inputs

You must send an image as base64, you can't send a URL right now, unlike with OpenAI. Even though these are essentially the same feature.

https://docs.anthropic.com/en/api/messages-examples#vision

https://platform.openai.com/docs/guides/vision

Tool definitions

With Claude, you have to specify the key input_schema as opposed to parameters.

https://docs.anthropic.com/en/docs/tool-use

https://platform.openai.com/docs/guides/function-calling

Tool responses

If the assistant responds with a tool call, Claude puts it as a content block, whereas OpenAI makes it a separate key on the message object.

https://docs.anthropic.com/en/docs/tool-use#tool-use-and-tool-result-content-blocks

https://platform.openai.com/docs/guides/function-calling

Why?

I'm not sure why Anthropic is making their client incompatible with OpenAI. I doubt it helps adoption to make it harder to switch between clients.

Maybe Anthropic wants to leave open space to try things that are different from OpenAI.

I don't think it would be impossible for them to decide to implement an OpenAI compatible API that would allow people currently using the OpenAI tooling to quickly switch to Anthropic, even if it won't serve all of Anthropic's use cases in the future.

Why do you think they've chosen to break compatibility here?