From dbf3938367e0e3c418f9542a05319ff3e3e37a04 Mon Sep 17 00:00:00 2001 From: Dhruvj07 Date: Tue, 8 Apr 2025 16:27:20 +0530 Subject: [PATCH 1/3] fix: Remove extra comma --- javelin_sdk/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javelin_sdk/client.py b/javelin_sdk/client.py index ee216de..439b830 100644 --- a/javelin_sdk/client.py +++ b/javelin_sdk/client.py @@ -708,7 +708,7 @@ def override_endpoint_url(request: Any, **kwargs) -> None: updated_url = original_url._replace( scheme=parsed_base.scheme, netloc=parsed_base.netloc, - path=f"/v1{original_url.path}", + path=f"{original_url.path}", ) request.url = urlunparse(updated_url) From 7093194bc1b723258ab8359efb60f6a584175c48 Mon Sep 17 00:00:00 2001 From: Dhruvj07 Date: Tue, 8 Apr 2025 16:41:44 +0530 Subject: [PATCH 2/3] fix:revert client changes --- javelin_sdk/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javelin_sdk/client.py b/javelin_sdk/client.py index 439b830..ee216de 100644 --- a/javelin_sdk/client.py +++ b/javelin_sdk/client.py @@ -708,7 +708,7 @@ def override_endpoint_url(request: Any, **kwargs) -> None: updated_url = original_url._replace( scheme=parsed_base.scheme, netloc=parsed_base.netloc, - path=f"{original_url.path}", + path=f"/v1{original_url.path}", ) request.url = urlunparse(updated_url) From d92d270bb07963aff07c643b9a9d317d6bb9bb4e Mon Sep 17 00:00:00 2001 From: Dhruvj07 Date: Thu, 10 Apr 2025 16:13:07 +0530 Subject: [PATCH 3/3] fix: Added failed cases of bedrock family to uniform test --- examples/bedrock/bedrock_client_universal.py | 152 +++++++++++++++++++ 1 file changed, 152 insertions(+) diff --git a/examples/bedrock/bedrock_client_universal.py b/examples/bedrock/bedrock_client_universal.py index a50c81e..be0adfe 100644 --- a/examples/bedrock/bedrock_client_universal.py +++ b/examples/bedrock/bedrock_client_universal.py @@ -141,6 +141,83 @@ def bedrock_converse_stream_example(bedrock_runtime_client): except Exception as e: print("Error streaming converse response:", e) return "".join(tokens) +def test_claude_v2_invoke(bedrock_runtime_client): + print("\n--- Test: anthropic.claude-v2 / invoke ---") + try: + response = bedrock_runtime_client.invoke_model( + modelId="anthropic.claude-v2", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "Explain quantum computing"}] + }), + contentType="application/json" + ) + result = json.loads(response["body"].read()) + print(json.dumps(result, indent=2)) + except Exception as e: + print("❌ Error:", e) + +def test_claude_v2_stream(bedrock_runtime_client): + print("\n--- Test: anthropic.claude-v2 / invoke-with-response-stream ---") + try: + response = bedrock_runtime_client.invoke_model_with_response_stream( + modelId="anthropic.claude-v2", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "Tell me about LLMs"}] + }), + contentType="application/json" + ) + output = "" + for part in response["body"]: + chunk = json.loads(part["chunk"]["bytes"].decode()) + delta = chunk.get("delta", {}).get("text", "") + output += delta + print(delta, end="", flush=True) + print("\nStreamed Output Complete.") + except Exception as e: + print("❌ Error:", e) + +def test_haiku_v3_invoke(bedrock_runtime_client): + print("\n--- Test: anthropic.claude-3-haiku-20240307-v1:0 / invoke ---") + try: + response = bedrock_runtime_client.invoke_model( + modelId="anthropic.claude-3-haiku-20240307-v1:0", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "What is generative AI?"}] + }), + contentType="application/json" + ) + result = json.loads(response["body"].read()) + print(json.dumps(result, indent=2)) + except Exception as e: + print("❌ Error:", e) + +def test_haiku_v3_stream(bedrock_runtime_client): + print("\n--- Test: anthropic.claude-3-haiku-20240307-v1:0 / invoke-with-response-stream ---") + try: + response = bedrock_runtime_client.invoke_model_with_response_stream( + modelId="anthropic.claude-3-haiku-20240307-v1:0", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "What are AI guardrails?"}] + }), + contentType="application/json" + ) + output = "" + for part in response["body"]: + chunk = json.loads(part["chunk"]["bytes"].decode()) + delta = chunk.get("delta", {}).get("text", "") + output += delta + print(delta, end="", flush=True) + print("\nStreamed Output Complete.") + except Exception as e: + print("❌ Error:", e) def main(): @@ -194,8 +271,83 @@ def main(): except Exception as e: print("Error in bedrock_converse_stream_example:", e) + # 5) Test anthropic.claude-v2 / invoke + print("\n--- Test: anthropic.claude-v2 / invoke ---") + try: + response = bedrock_runtime_client.invoke_model( + modelId="anthropic.claude-v2", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "Explain quantum computing"}] + }), + contentType="application/json" + ) + result = json.loads(response["body"].read()) + print(json.dumps(result, indent=2)) + except Exception as e: + print("Error in claude-v2 invoke:", e) + + # 6) Test anthropic.claude-v2 / invoke-with-response-stream + print("\n--- Test: anthropic.claude-v2 / invoke-with-response-stream ---") + try: + response = bedrock_runtime_client.invoke_model_with_response_stream( + modelId="anthropic.claude-v2", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "Tell me about LLMs"}] + }), + contentType="application/json" + ) + for part in response["body"]: + chunk = json.loads(part["chunk"]["bytes"].decode()) + delta = chunk.get("delta", {}).get("text", "") + print(delta, end="", flush=True) + print("\nStreamed Output Complete.") + except Exception as e: + print("Error in claude-v2 stream:", e) + + # 7) Test anthropic.claude-3-haiku-20240307-v1:0 / invoke + print("\n--- Test: anthropic.claude-3-haiku-20240307-v1:0 / invoke ---") + try: + response = bedrock_runtime_client.invoke_model( + modelId="anthropic.claude-3-haiku-20240307-v1:0", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "What is generative AI?"}] + }), + contentType="application/json" + ) + result = json.loads(response["body"].read()) + print(json.dumps(result, indent=2)) + except Exception as e: + print("Error in haiku invoke:", e) + + # 8) Test anthropic.claude-3-haiku-20240307-v1:0 / invoke-with-response-stream + print("\n--- Test: anthropic.claude-3-haiku-20240307-v1:0 / invoke-with-response-stream ---") + try: + response = bedrock_runtime_client.invoke_model_with_response_stream( + modelId="anthropic.claude-3-haiku-20240307-v1:0", + body=json.dumps({ + "anthropic_version": "bedrock-2023-05-31", + "max_tokens": 100, + "messages": [{"role": "user", "content": "What are AI guardrails?"}] + }), + contentType="application/json" + ) + for part in response["body"]: + chunk = json.loads(part["chunk"]["bytes"].decode()) + delta = chunk.get("delta", {}).get("text", "") + print(delta, end="", flush=True) + print("\nStreamed Output Complete.") + except Exception as e: + print("Error in haiku stream:", e) + print("\nScript complete.") + if __name__ == "__main__": main()