Tôi đang ở trong tình huống có thể dùng token Gemini với chi phí rất rẻ, nên như tiêu đề, tôi đang sử dụng bằng cách nối một backend proxy có gắn Gemini vào Claude Code. Gemini CLI quá hiếu chiến (ngay cả khi chỉ bảo nó đọc mã, nó vẫn cứ cố sửa gì đó), nên không hợp với tôi; còn thiết kế agent của Claude Code có vẻ hoạt động tốt nhất, nên ngay cả sau khi thay backend, tôi vẫn dùng rất hài lòng.
Lớp proxy này thực chất là thêm một lớp trừu tượng nữa, nên có thể kết nối và sử dụng OpenAI, XAI, Claude, Gemini với Claude Code theo cùng một cách.
Tôi cũng phải giải quyết khá nhiều vấn đề phiền phức như streaming + lỗi phân tích JSON, hay tinh chỉnh schema cho tool use, nên nếu có ai muốn thử làm điều tương tự thì hãy cho tôi biết trong phần bình luận, tôi sẽ thử công khai nó dưới dạng mã nguồn mở.
Nếu có ai từng làm công việc tương tự, hãy chia sẻ kinh nghiệm nhé~
8 bình luận
Cách tiếp cận của tôi hơi khác một chút: tôi không dùng công cụ agent như Claude Code hay Cowork, mà phát triển trực tiếp bằng đối thoại ngôn ngữ tự nhiên trên web chat của LLM thuần. Tôi dựng một proxy trên máy chủ riêng để nối API Claude ↔ Gemini, rồi để Gemini vận hành dịch vụ thực tế (chatbot KakaoTalk, agent ngôn ngữ tự nhiên cho ERP), còn phần review code và thiết kế kiến trúc thì làm bằng cách trao đổi với Claude, con người chỉ đảm nhiệm bước xác nhận cuối cùng và triển khai.
Gemini lo phần thực thi code, Claude lo phần kiểm tra code, con người lo xác nhận cuối cùng — cách phân vai này vận hành khá ổn.
So với các agent dựa trên trình soạn thảo mã nguồn (như Claude Code), ưu điểm là mức tiêu thụ token thấp hơn rất nhiều. Vì trao đổi code qua hội thoại mà không có file I/O, rồi con người tự áp dụng trực tiếp. Điểm tôi đồng cảm là: "thiết kế agent của Claude hoạt động tốt nhất". Gemini CLI quả thật khá có chính kiến (haha), nên ở vai trò kiểm tra thì Claude vẫn tốt hơn.
Cảm ơn bạn đã chia sẻ kinh nghiệm. 👍 Mình cũng rất đồng cảm với phần nói về sự khác biệt trong xu hướng của Gemini và Claude.
Bạn đang dùng đồng thời nhiều nhà cung cấp trong một giao diện web duy nhất nhỉ. Khi làm autonomous coding dựa trên agent, thường có xu hướng viết khá hời hợt theo kiểu “phát triển theo CV” thay vì suy nghĩ để có một thiết kế tốt, nên mình cũng nghĩ rằng phần thiết kế nên được thực hiện theo hình thức đối thoại. ☺️
Tôi thì thường chạy mấy thứ như anthropic-proxy ở máy local rồi dùng lệnh như
ANTHROPIC_BASE_URL=http://0.0.0.0:3000 claudeđể proxy sang dùng các model Gemini hay GPT khác, nên nghe nói anh/chị triển khai theo kiểu serverless thì cũng thấy khá tò mò.Ồ, cũng có mã nguồn mở được viết bằng JS nhỉ. Cảm ơn bạn 👍👍
Cấu trúc bên trong thì khá giống nhau, nhưng tôi dùng theo hướng trừu tượng hóa nhiều hơn một chút. (khác biệt về sở thích)
Ngay cả khi viết theo kiểu serverless thì vì thời gian phản hồi của LLM chậm hơn nhiều nên khó cảm nhận được cold start, và vẫn khá mượt. Ngoài ra, nếu dùng tính năng Function URL của Lambda thì cũng có thể streaming, nên hoàn toàn có thể bao phủ được nhu cầu. Đặc biệt, điểm tôi thích nhất là kể cả khi khởi động lại cũng không cần phải bật server.
Trong đoạn mã này, nếu chỉ sửa phần FastAPI sang dạng lambda handler rồi đưa lên Lambda thì (sau khi xử lý sự cố một chút) có lẽ vẫn đủ dùng khá ổn.
https://github.com/1rgs/claude-code-proxy
Có điểm gì khác với proxy kiểu này không?
Cảm ơn bạn đã giới thiệu một thư viện hay. Nếu biết sớm hơn thì có lẽ tôi đã làm nó thuận tiện hơn một chút 👍👍
Về mặt nội bộ, bản thân việc xử lý chuyển đổi định dạng đầu vào/đầu ra có vẻ không khác nhau nhiều,
nhưng nếu tìm điểm khác biệt thì thư viện bạn giới thiệu dựa trên self-hosting / Docker / Python / LiteLLM, còn tôi thì triển khai theo hướng serverless / AWS Lambda / TS / không phụ thuộc vào thư viện nào.
Khi kết nối Gemini với Claude Code thì có thể vẫn bị khóa đấy.
Có lẽ bạn nên cẩn thận với vụ đình chỉ hàng loạt quy mô lớn của opencode.
Cảm ơn bạn đã phản hồi nhanh. 🙌
Vấn đề dừng Open Code (đăng ký Claude => liên kết Open Code) xảy ra do dùng khóa gói cước cố định đã được xác thực bằng OAuth trong phần mềm của bên thứ ba, nên mới phát sinh vấn đề. Nếu dùng theo cách như trên thì cần cấp API key và sử dụng theo hình thức tính phí theo mức dùng, như vậy không vi phạm điều khoản.