Packaging tools for own use
Project description
hwhkit
Main function
- Connection
- mqtt
- llm
Connection
Sync MQTT
import asyncio
import time
from hwhkit.connection.mqtt.client import MQTTClientManager
async def main():
client_id = "test_mqtt_client"
kes = "./mqtt_key_pairs.yaml"
manager = MQTTClientManager(mqtt_config=kes)
manager.create_client(client_id=client_id, broker="broker.emqx.io", port=1883)
manager.start_all_clients()
@manager.subscribe(topic="topic_key")
def handle_message(client, message: str):
print(f"Received message from {client._client_id}: {message}")
manager.publish(client_id, "topic_key", f"Response from {client._client_id}")
try:
while True:
time.sleep(2)
manager.publish(client_id=client_id, topic="topic_key", message="Hello from Client2")
except KeyboardInterrupt:
print("Exiting...")
if __name__ == '__main__':
asyncio.run(main())
Async MQTT
import asyncio
from hwhkit.connection.mqtt.async_client import MQTTClientManager, MQTTConfig
from hwhkit.utils import logger
async def main():
configs = [
MQTTConfig(
client_id="client1",
broker="broker.emqx.io",
port=1883,
# username="user1",
# password="pass1"
),
]
kes = "./mqtt_key_pairs.yaml"
async with MQTTClientManager(mqtt_config=kes) as manager:
for config in configs:
await manager.add_client(config)
@manager.topic_handler("topic_key")
async def topic_key(client, topic, message):
logger.info(f"Received message on {topic} from {client}: {message}")
try:
await manager.run()
except KeyboardInterrupt:
logger.info("Shutting down...")
if __name__ == "__main__":
asyncio.run(main())
LLM
Three steps to use models
Step1, llm_config.yaml
matter that needs attention
- A_custom_model_name used for models.get_model_instance()
- A_custom_model_name.name should specify the name of the model supported by the current company
models:
openai:
A_custom_model_name:
name: "gpt-4o"
short_name: "OIG4"
company: "openai"
max_input_token: 8100
max_output_token: 2048
top_p: 0.5
top_k: 1
temperature: 0.5
input_token_fee_pm: 30.0
output_token_fee_pm: 60.0
train_token_fee_pm: 0.0
keys:
- name: "openai_key1"
- name: "openai_key2"
siliconflow:
qw-72b-p:
name: "Qwen/QVQ-72B-Preview"
short_name: "QW-72B-P"
company: "siliconflow"
max_input_token: 8100
max_output_token: 2048
top_p: 0.5
top_k: 1
temperature: 0.5
input_token_fee_pm: 30.0
output_token_fee_pm: 60.0
train_token_fee_pm: 0.0
keys:
- name: "siliconflow_1"
Step2, llm_keys.yaml
- The keys name of the model in llm_config.yaml corresponds to llm_keys.yaml one by one
keys:
openai_key1: "xx"
openai_key2: "xx"
anthropic_key1: "your_anthropic_api_key_1"
anthropic_key2: "your_anthropic_api_key_2"
Step3, load models
from hwhkit.llm.config import load_models_from_yaml
async def main():
models = load_models_from_yaml(config_file="examples/llm_config.yaml", keys_file="examples/llm_keys.yaml")
print(models.list_models())
resp = await models.get_model_instance("gpt-4o").chat("who r u?")
print(resp)
if __name__ == '__main__':
import asyncio
asyncio.run(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hwhkit-1.0.9.tar.gz
(15.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
hwhkit-1.0.9-py3-none-any.whl
(29.3 kB
view details)
File details
Details for the file hwhkit-1.0.9.tar.gz.
File metadata
- Download URL: hwhkit-1.0.9.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b95f77ec52e6350bf99367d43b87caee575162c8cc3f876cf2505146ca1316a
|
|
| MD5 |
90486bcfea3aaf3f9e8de0abb19a3949
|
|
| BLAKE2b-256 |
8a8025a24288ddb38d37cbc2fe2d6d3516eb61226397ef483e044ca55520020d
|
File details
Details for the file hwhkit-1.0.9-py3-none-any.whl.
File metadata
- Download URL: hwhkit-1.0.9-py3-none-any.whl
- Upload date:
- Size: 29.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d15801b5629560f1a318dc80268dbb7b6f6e24b84f46d85e00c5e7d016f41863
|
|
| MD5 |
616bd6930116b5c68227c64be09a5007
|
|
| BLAKE2b-256 |
256dad548ff247c2b5fa1749bfca7245908a1cd86977b6c4ba570761a41e5716
|