openrouter-provider 0.0.7__tar.gz → 0.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openrouter-provider might be problematic. Click here for more details.
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/PKG-INFO +1 -1
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/pyproject.toml +1 -1
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/Chatbot_manager.py +13 -2
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/OpenRouterProvider.py +26 -3
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/openrouter_provider.egg-info/PKG-INFO +1 -1
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/README.md +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/setup.cfg +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/Chat_message.py +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/LLMs.py +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/Tool.py +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/__init__.py +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/openrouter_provider.egg-info/SOURCES.txt +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/openrouter_provider.egg-info/dependency_links.txt +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/openrouter_provider.egg-info/requires.txt +0 -0
- {openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/openrouter_provider.egg-info/top_level.txt +0 -0
{openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/Chatbot_manager.py
RENAMED
|
@@ -6,6 +6,7 @@ from dotenv import load_dotenv
|
|
|
6
6
|
import time
|
|
7
7
|
import json
|
|
8
8
|
from typing import Iterator, AsyncIterator
|
|
9
|
+
from pydantic import BaseModel
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
_base_system_prompt = """
|
|
@@ -90,7 +91,7 @@ class Chatbot_manager:
|
|
|
90
91
|
system_prompt=self._system_prompt,
|
|
91
92
|
querys=self._memory,
|
|
92
93
|
tools=self.tools + tools,
|
|
93
|
-
provider=provider
|
|
94
|
+
provider=provider,
|
|
94
95
|
)
|
|
95
96
|
reply.answeredBy = model
|
|
96
97
|
self._memory.append(reply)
|
|
@@ -201,4 +202,14 @@ class Chatbot_manager:
|
|
|
201
202
|
|
|
202
203
|
self._memory.append(Chat_message(text=text, role=Role.ai, answerdBy=model))
|
|
203
204
|
|
|
204
|
-
|
|
205
|
+
def structured_output(self, model: LLMModel, query: Chat_message, provider:ProviderConfig=None, json_schema: BaseModel=None) -> BaseModel:
|
|
206
|
+
self._memory.append(query)
|
|
207
|
+
client = OpenRouterProvider()
|
|
208
|
+
reply = client.structured_output(
|
|
209
|
+
model=model,
|
|
210
|
+
system_prompt=self._system_prompt,
|
|
211
|
+
querys=self._memory,
|
|
212
|
+
provider=provider,
|
|
213
|
+
json_schema=json_schema
|
|
214
|
+
)
|
|
215
|
+
return reply
|
{openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/OpenRouterProvider.py
RENAMED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
|
|
2
|
+
# structured output
|
|
3
|
+
# https://note.com/brave_quince241/n/n60a5759c8f05
|
|
4
|
+
|
|
1
5
|
import logging
|
|
2
6
|
from .Chat_message import *
|
|
3
7
|
from .Tool import tool_model
|
|
@@ -10,6 +14,8 @@ import os, time
|
|
|
10
14
|
from dataclasses import dataclass, field, asdict
|
|
11
15
|
from typing import List, Optional, Literal, Iterator, AsyncIterator
|
|
12
16
|
from pprint import pprint
|
|
17
|
+
from pydantic import BaseModel
|
|
18
|
+
|
|
13
19
|
|
|
14
20
|
# エラーのみ表示、詳細なトレースバック付き
|
|
15
21
|
logging.basicConfig(level=logging.ERROR, format="%(asctime)s - %(levelname)s - %(message)s")
|
|
@@ -87,7 +93,7 @@ class OpenRouterProvider:
|
|
|
87
93
|
"tool_call_id": str(t.id),
|
|
88
94
|
"content": str(t.result)
|
|
89
95
|
})
|
|
90
|
-
|
|
96
|
+
|
|
91
97
|
return messages
|
|
92
98
|
|
|
93
99
|
def invoke(self, model: LLMModel, system_prompt: Chat_message, querys: list[Chat_message], tools: list[tool_model] = [], provider: ProviderConfig = None) -> Chat_message:
|
|
@@ -96,12 +102,12 @@ class OpenRouterProvider:
|
|
|
96
102
|
|
|
97
103
|
tool_defs = [tool.tool_definition for tool in tools] if tools else None
|
|
98
104
|
provider_dict = provider.to_dict() if provider else None
|
|
99
|
-
|
|
105
|
+
|
|
100
106
|
response = self.client.chat.completions.create(
|
|
101
107
|
model=model.name,
|
|
102
108
|
messages=messages,
|
|
103
109
|
tools=tool_defs,
|
|
104
|
-
extra_body={"provider": provider_dict}
|
|
110
|
+
extra_body={"provider": provider_dict},
|
|
105
111
|
)
|
|
106
112
|
|
|
107
113
|
reply = Chat_message(text=response.choices[0].message.content, role=Role.ai, raw_response=response)
|
|
@@ -199,4 +205,21 @@ class OpenRouterProvider:
|
|
|
199
205
|
logger.exception(f"An error occurred while asynchronously streaming the model: {e.__class__.__name__}: {str(e)}")
|
|
200
206
|
return
|
|
201
207
|
|
|
208
|
+
def structured_output(self, model: LLMModel, system_prompt: Chat_message, querys: list[Chat_message], provider: ProviderConfig = None, json_schema: BaseModel = None) -> BaseModel:
|
|
209
|
+
try:
|
|
210
|
+
messages = self.make_prompt(system_prompt, querys)
|
|
211
|
+
provider_dict = provider.to_dict() if provider else None
|
|
212
|
+
|
|
213
|
+
response = self.client.chat.completions.create(
|
|
214
|
+
model=model.name,
|
|
215
|
+
messages=messages,
|
|
216
|
+
response_format={"type": "json_schema", "json_schema": {"name": json_schema.__name__, "schema": json_schema.model_json_schema()}},
|
|
217
|
+
extra_body={"provider": provider_dict},
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
return json_schema.model_validate_json(response.choices[0].message.content)
|
|
221
|
+
|
|
222
|
+
except Exception as e:
|
|
223
|
+
logger.exception(f"An error occurred while invoking structured output: {e.__class__.__name__}: {str(e)}")
|
|
224
|
+
return Chat_message(text="Fail to get response. Please see the error message.", role=Role.ai, raw_response=None)
|
|
202
225
|
|
|
File without changes
|
|
File without changes
|
{openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/OpenRouterProvider/Chat_message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrouter_provider-0.0.7 → openrouter_provider-0.0.8}/src/openrouter_provider.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|