Packaging tools for own use
Project description
hwhkit
Main function
- Connection
- mqtt
- llm
Connection
yaml config
key_pairs:
default_topic:
algorithm: rsa
public: '-----BEGIN PUBLIC KEY-----'
private: '-----BEGIN PRIVATE KEY-----'
default_topic_2:
algorithm: aes
private: '---------xxx-------'
Sync MQTT
import time
import signal
from hwhkit.connection.mqtt.client import MQTTClientManager
def main():
default_topic = "default_topic"
client_id = "test_mqtt_client"
manager = MQTTClientManager(mqtt_config="mqtt_keys.yaml")
manager.create_client(client_id=client_id, broker="broker.emqx.io", port=1883)
manager.start_all_clients()
@manager.subscribe(topic=default_topic)
def handle_message(client, message: str):
print(f"Received message from {client}: {message}")
manager.publish(client_id, default_topic, f"Response from {client}")
time.sleep(4)
manager.publish(client_id=client_id, topic=default_topic, message="Hello from Client2")
signal.pause()
if __name__ == '__main__':
main()
Async MQTT
import asyncio
from hwhkit.connection.mqtt.async_client import MQTTAsyncClientManager, MQTTConfig
from hwhkit.utils import logger
async def main():
configs = [
MQTTConfig(client_id="client1", broker="broker.emqx.io", port=1883, username="user", password="pass"),
]
default_topic = "default_topic"
async with MQTTAsyncClientManager(mqtt_config="mqtt_keys.yaml") as manager:
for config in configs:
await manager.add_client(config)
@manager.topic_handler(default_topic)
async def topic_key(client, topic, message):
logger.info(f"Received message on {topic} from {client}: {message}")
await manager.publish("client1", default_topic, f"Response from {client}")
await manager.run()
if __name__ == "__main__":
asyncio.run(main())
LLM
Three steps to use models
Step1, llm_config.yaml
matter that needs attention
- custom_model_name used for models.get_model_instance()
- custom_model_name.name should specify the name of the model supported by the current company
models:
openai:
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
from hwhkit.llm import LLMClient
async def main():
# The first method
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)
# The second method
client = LLMClient(config_file="llm_config.yaml", keys_file="llm_keys.yaml")
print(client.list_models())
resp = await client.chat("qw-72b-p", "who r u?", system_prompt="")
print(resp)
async for chunk in client.chat_stream("qw-72b-p", "who r u?", system_prompt=""):
print(chunk)
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.14.tar.gz
(17.3 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.14-py3-none-any.whl
(30.9 kB
view details)
File details
Details for the file hwhkit-1.0.14.tar.gz.
File metadata
- Download URL: hwhkit-1.0.14.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daa23df7e6dade712fc284b1690bb35839ce5a1daba8ef34d80e614ac377161d
|
|
| MD5 |
c685345965ad1625cbd1d9ffdef4a8a2
|
|
| BLAKE2b-256 |
da7cf6365114ea2490cbb1bcc39f7cbecbb9ae00eaecfe7554b0b6a8454c4be3
|
File details
Details for the file hwhkit-1.0.14-py3-none-any.whl.
File metadata
- Download URL: hwhkit-1.0.14-py3-none-any.whl
- Upload date:
- Size: 30.9 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 |
84ad8b80f05bc0451dcbb4701c8e69df5a48edd2569fc47b304027d9161db742
|
|
| MD5 |
42ab9b7e608de0555e8ab066e14e1f93
|
|
| BLAKE2b-256 |
c744eebc713b3e6baab44d8d0a5cd99825167df0dadd2a7209c23f1a6fb9a3e1
|