import requests from odoo import _, fields, models from odoo.exceptions import UserError class ResConfigSettings(models.TransientModel): _inherit = "res.config.settings" together_ai_key = fields.Char( string="Together AI Key", config_parameter="document_parser.together_ai_key", ) openrouter_ai_key = fields.Char( string="OpenRouter AI Key", config_parameter="document_parser.openrouter_ai_key", ) def action_test_together_ai_connection(self): self.ensure_one() if not self.together_ai_key: raise UserError(_("Please add the Together AI key first.")) response = requests.get( "https://api.together.xyz/v1/models", headers={"Authorization": f"Bearer {self.together_ai_key}"}, timeout=20, ) if response.ok: return { "type": "ir.actions.client", "tag": "display_notification", "params": { "title": _("Together AI Connection"), "message": _("Connection successful."), "type": "success", "sticky": False, }, } raise UserError(_("Together AI connection failed: %s") % (response.text or response.reason)) def action_test_openrouter_ai_connection(self): self.ensure_one() if not self.openrouter_ai_key: raise UserError(_("Please add the OpenRouter key first.")) response = requests.get( "https://openrouter.ai/api/v1/models", headers={ "Authorization": f"Bearer {self.openrouter_ai_key}", "HTTP-Referer": self.env["ir.config_parameter"].sudo().get_param("web.base.url", ""), "X-Title": "Odoo Document Parser", }, timeout=20, ) if response.ok: return { "type": "ir.actions.client", "tag": "display_notification", "params": { "title": _("OpenRouter Connection"), "message": _("Connection successful."), "type": "success", "sticky": False, }, } raise UserError(_("OpenRouter connection failed: %s") % (response.text or response.reason))