Skip to main content

No project description provided

Project description

Anthropic extensions

Get Pocket Anthropic Tool Spec

from hyperpocket_anthropic import PocketAnthropic

pocket = PocketAnthropic(tools=[
    "https://github.com/my-org/some-awesome-tool",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
]
)

# get anthropic compatible tool specs from pocket 
tool_specs = pocket.get_anthropic_tool_specs()

Tool Injection

import os

from anthropic import Anthropic

messages = [
    {
        "role": "user",
        "content": "get slack message",
    }
]

llm = Anthropic()
response = llm.messages.create(
    model=os.getenv("ANTHROPIC_MODEL_NAME"),
    max_tokens=500,
    messages=messages,
    tools=tool_specs,  # pass the tool specs as an tools argument
)

Tool Call

response = llm.messages.create(
    model=os.getenv("ANTHROPIC_MODEL_NAME"),
    max_tokens=500,
    messages=messages,
    tools=tool_specs,  # pass the tool specs as an tools argument
)

tool_result_blocks = []
for block in response.content:
    if block.type == "tool_use":
        tool_result_block = pocket.invoke(block)
        tool_result_blocks.append(tool_result_block)

messages.append({"role": "user", "content": tool_result_blocks})

response_after_tool_call = llm.messages.create(
    model=os.getenv("ANTHROPIC_MODEL_NAME"),
    max_tokens=500,
    messages=messages,
    tools=tool_specs,  # pass the tool specs as an tools argument
)

# ...

Full Code

import os

from anthropic import Anthropic

from hyperpocket_anthropic import PocketAnthropic

pocket = PocketAnthropic(tools=[
    "https://github.com/my-org/some-awesome-tool",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
]
)

# get anthropic compatible tool specs from pocket 
tool_specs = pocket.get_anthropic_tool_specs()
messages = [
    {
        "role": "user",
        "content": "get slack message",
    }
]

llm = Anthropic()
response = llm.messages.create(
    model=os.getenv("ANTHROPIC_MODEL_NAME"),
    max_tokens=500,
    messages=messages,
    tools=tool_specs,  # pass the tool specs as an tools argument
)

tool_result_blocks = []
for block in response.content:
    if block.type == "tool_use":
        tool_result_block = pocket.invoke(block)  # tool call by pocket
        tool_result_blocks.append(tool_result_block)

messages.append({"role": "user", "content": tool_result_blocks})

response_after_tool_call = llm.messages.create(
    model=os.getenv("ANTHROPIC_MODEL_NAME"),
    max_tokens=500,
    messages=messages,
    tools=tool_specs,  # pass the tool specs as an tools argument
)

Examples

import os

from anthropic import Anthropic

from hyperpocket_anthropic import PocketAnthropic

client = Anthropic()
pocket = PocketAnthropic(tools=[
    "https://github.com/my-org/some-awesome-tool",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-message",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
]
)

tool_specs = pocket.get_anthropic_tool_specs()

messages = []
while True:
    print("user(q to quit) : ", end="")
    user_input = input()
    if user_input == "q":
        break
    if user_input == "":
        continue

    messages.append({"role": "user", "content": user_input})

    while True:
        response = client.messages.create(
            model=os.getenv("ANTHROPIC_MODEL_NAME"),
            max_tokens=500,
            messages=messages,
            tools=tool_specs,
        )

        messages.append({"role": "assistant", "content": response.content})

        tool_result_blocks = []
        for block in response.content:
            if block.type == "text":
                print("[ai] response : ", block.text)

            elif block.type == "tool_use":
                tool_result_block = pocket.invoke(block)
                tool_result_blocks.append(tool_result_block)

                print("[tool] response : ", tool_result_block["content"])

        messages.append({"role": "user", "content": tool_result_blocks})

        if response.stop_reason != "tool_use":
            break

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyperpocket_anthropic-0.3.1.tar.gz (58.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyperpocket_anthropic-0.3.1-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file hyperpocket_anthropic-0.3.1.tar.gz.

File metadata

File hashes

Hashes for hyperpocket_anthropic-0.3.1.tar.gz
Algorithm Hash digest
SHA256 532b322a8ddf6e6d84f8df7f3722af775484a1317d70368dfa9aa0819c49abae
MD5 11d1b28ab8cd6d576de26f305022827e
BLAKE2b-256 3e8c9903dc46fb86d334a27c44f77c8dcd83c8a43378f4f89282378943f52058

See more details on using hashes here.

File details

Details for the file hyperpocket_anthropic-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hyperpocket_anthropic-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 05ceaad91aad74c2b27cf0ce0b399fd1ef1484f97a480cfb9c89b0b30bb3d518
MD5 e46c3a80266cd91b2177f978a28b4743
BLAKE2b-256 a222d64383d23d863d77e1808a3649068df8cb54b6a58a53fac3f95ba21dfea9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page