diff --git a/common/log.cpp b/common/log.cpp index 52b31470c46bd..d564c86c72de0 100644 --- a/common/log.cpp +++ b/common/log.cpp @@ -297,12 +297,14 @@ struct common_log { if (file) { fclose(file); + file = nullptr; } if (path) { file = fopen(path, "w"); - } else { - file = nullptr; + if (!file) { + fprintf(stderr, "Failed to open log file: %s\n", path); + } } resume(); diff --git a/gguf-py/gguf/scripts/gguf_hash.py b/gguf-py/gguf/scripts/gguf_hash.py index 3ef98992197e9..154a2dfcfcdc0 100755 --- a/gguf-py/gguf/scripts/gguf_hash.py +++ b/gguf-py/gguf/scripts/gguf_hash.py @@ -65,14 +65,14 @@ def gguf_hash(reader: GGUFReader, filename: str, disable_progress_bar: bool, no_ if not no_layer: - sha1_layer = hashlib.sha1() - sha1_layer.update(tensor.data.data) - print("sha1 {0} {1}:{2}".format(sha1_layer.hexdigest(), filename, tensor.name)) # noqa: NP100 - sha256_layer = hashlib.sha256() sha256_layer.update(tensor.data.data) print("sha256 {0} {1}:{2}".format(sha256_layer.hexdigest(), filename, tensor.name)) # noqa: NP100 + sha1_layer = hashlib.sha1() + sha1_layer.update(tensor.data.data) + print("sha1 {0} {1}:{2} (deprecated)".format(sha1_layer.hexdigest(), filename, tensor.name)) # noqa: NP100 + sha1.update(tensor.data.data) sha256.update(tensor.data.data) uuidv5_sha1.update(tensor.data.data) @@ -80,9 +80,9 @@ def gguf_hash(reader: GGUFReader, filename: str, disable_progress_bar: bool, no_ # Flush Hash Progress Bar bar.close() - # Display Hash Output - print("sha1 {0} {1}".format(sha1.hexdigest(), filename)) # noqa: NP100 + # Display Hash Output (SHA256 first as it's more secure than SHA1) print("sha256 {0} {1}".format(sha256.hexdigest(), filename)) # noqa: NP100 + print("sha1 {0} {1} (deprecated, use sha256)".format(sha1.hexdigest(), filename)) # noqa: NP100 print("uuid {0} {1}".format(uuid.UUID(bytes=uuidv5_sha1.digest()[:16], version=5), filename)) # noqa: NP100 diff --git a/tools/server/tests/unit/test_chat_completion.py b/tools/server/tests/unit/test_chat_completion.py index 509c024b75fd3..b54f1fc966e05 100644 --- a/tools/server/tests/unit/test_chat_completion.py +++ b/tools/server/tests/unit/test_chat_completion.py @@ -1,7 +1,10 @@ +import os import pytest from openai import OpenAI from utils import * +TEST_API_KEY = os.getenv("LLAMA_SERVER_TEST_API_KEY", "dummy") + server: ServerProcess @pytest.fixture(autouse=True) @@ -100,7 +103,7 @@ def test_chat_completion_stream(system_prompt, user_prompt, max_tokens, re_conte def test_chat_completion_with_openai_library(): global server server.start() - client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1") + client = OpenAI(api_key=TEST_API_KEY, base_url=f"http://{server.server_host}:{server.server_port}/v1") res = client.chat.completions.create( model="gpt-3.5-turbo-instruct", messages=[ @@ -293,7 +296,7 @@ def test_chat_completion_with_timings_per_token(): def test_logprobs(): global server server.start() - client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1") + client = OpenAI(api_key=TEST_API_KEY, base_url=f"http://{server.server_host}:{server.server_port}/v1") res = client.chat.completions.create( model="gpt-3.5-turbo-instruct", temperature=0.0, @@ -320,7 +323,7 @@ def test_logprobs(): def test_logprobs_stream(): global server server.start() - client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1") + client = OpenAI(api_key=TEST_API_KEY, base_url=f"http://{server.server_host}:{server.server_port}/v1") res = client.chat.completions.create( model="gpt-3.5-turbo-instruct", temperature=0.0, @@ -371,7 +374,7 @@ def test_logit_bias(): tokens = res.body["tokens"] logit_bias = {tok: -100 for tok in tokens} - client = OpenAI(api_key="dummy", base_url=f"http://{server.server_host}:{server.server_port}/v1") + client = OpenAI(api_key=TEST_API_KEY, base_url=f"http://{server.server_host}:{server.server_port}/v1") res = client.chat.completions.create( model="gpt-3.5-turbo-instruct", temperature=0.0,