68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
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))
|