Skip to main content

No project description provided

Project description

OpenAI extensions

Get Pocket OpenAI Tool Spec

from hyperpocket_openai import PocketOpenAI

pocket = PocketOpenAI(tools=[
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-messages",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
]
)

# get openai tool specs from pocket
tool_specs = pocket.get_open_ai_tool_specs()

Tool Injection

import os

from openai import OpenAI

llm = OpenAI()

messages = [
    {
        "role": "user",
        "content": "get slack message",
    }
]
response = llm.chat.completions.create(
    model=os.getenv("OPEN_AI_MODEL"),
    messages=messages,
    tools=tool_specs  # pass the tool specs as an tools argument
)

Tool Call

response = llm.chat.completions.create(
    model=os.getenv("OPEN_AI_MODEL"),
    messages=messages,
    tools=tool_specs
)

choice = response.choices[0]
messages.append(choice.message)

if choice.finish_reason == "tool_calls":
    for tool_call in choice.message.tool_calls:
        # tool call by pocket
        tool_message = pocket.invoke(tool_call)
        messages.append(tool_message)

    # ...

Full Code

import os

from openai import OpenAI

from hyperpocket_openai import PocketOpenAI

pocket = PocketOpenAI(tools=[
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/get-messages",
    "https://github.com/vessl-ai/hyperpocket/tree/main/tools/slack/post-message",
]
)
tool_specs = pocket.get_open_ai_tool_specs()
llm = OpenAI()
messages = [
    {
        "role": "user",
        "content": "get slack message",
    }
]
response = llm.chat.completions.create(
    model=os.getenv("OPEN_AI_MODEL"),
    messages=messages,
    tools=tool_specs
)

choice = response.choices[0]
messages.append(choice.message)

if choice.finish_reason == "tool_calls":
    for tool_call in choice.message.tool_calls:
        tool_message = pocket.invoke(tool_call)
        messages.append(tool_message)

    repsonse_after_tool_call = llm.chat.completions.create(
        model=os.getenv("OPEN_AI_MODEL"),
        messages=messages,
        tools=tool_specs
    )

Examples

from hyperpocket.tool import from_git
from openai import OpenAI

from hyperpocket_openai import PocketOpenAI

pocket = PocketOpenAI(
    tools=[
        from_git("https://github.com/vessl-ai/hyperawesometools", "main", "managed-tools/slack/get-messages"),
        from_git("https://github.com/vessl-ai/hyperawesometools", "main", "managed-tools/slack/post-message"),
    ]
)
tool_specs = pocket.get_open_ai_tool_specs()

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

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

    while True:
        response = model.chat.completions.create(
            model="gpt-4o",
            messages=messages,
            tools=tool_specs,
        )
        choice = response.choices[0]
        messages.append(choice.message)
        if choice.finish_reason == "stop":
            break

        elif choice.finish_reason == "tool_calls":
            tool_calls = choice.message.tool_calls
            for tool_call in tool_calls:
                tool_message = pocket.invoke(tool_call)
                messages.append(tool_message)

    print("response : ", messages[-1].content)

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_openai-0.5.0.tar.gz (59.0 kB view details)

Uploaded Source

Built Distribution

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

hyperpocket_openai-0.5.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file hyperpocket_openai-0.5.0.tar.gz.

File metadata

  • Download URL: hyperpocket_openai-0.5.0.tar.gz
  • Upload date:
  • Size: 59.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for hyperpocket_openai-0.5.0.tar.gz
Algorithm Hash digest
SHA256 817043e9e5b780d73b22e70393cb57a3e65c4a88af87b9418f5617ff112a17e3
MD5 12b4bed8e9e8d654622b092ddfdbd300
BLAKE2b-256 b550f601671b52a77e2767c844bcab79acbdcd19f2c9e6131f732e050ccb306a

See more details on using hashes here.

File details

Details for the file hyperpocket_openai-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hyperpocket_openai-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6eec4943f46452a04f89a80e6804fec9e60cfbbe39883e02895937c491787ff2
MD5 15e13c0f20a69bb0d41f118070425e4a
BLAKE2b-256 4be2746225b6e9688dc7eeaed19b35555be7b67526c821ebd6ef9c503d50049f

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