## PR Description This PR adds 7 examples. * `call_a_tool_directly_with_auth.py` - Simple example that uses Arcade client to execute a tool that lists Gmail emails * `call_a_tool_directly.py` - Simple example that uses Arcade client to execute a tool that adds two numbers together * `call_a_tool_with_llm.py` - Simple example that uses the LLM api to star the arcade-ai repository * `get_auth_token.py` - Simple example that gets a Google auth token and then calls the Google API * `call_multiple_tools_directly_with_auth.py` - A more involved example that directly calls multiple spotify tools sequentially * `call_multiple_tools_with_llm.py` - A more involved example that uses an llm to call multiple spotify tools sequentially * `simple_chatbot.py` - Simple chatbot that uses arcade tools and has history --------- Co-authored-by: Nate Barbettini <nathanaelb@gmail.com>
45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
"""
|
|
This example shows how to call a tool that requires authorization with an LLM using the OpenAI Python client.
|
|
"""
|
|
|
|
import os
|
|
|
|
from openai import OpenAI
|
|
|
|
|
|
def call_tool_with_openai(client: OpenAI) -> dict:
|
|
response = client.chat.completions.create(
|
|
messages=[
|
|
{"role": "user", "content": "Star the ArcadeAI/arcade-ai repository."},
|
|
],
|
|
model="gpt-4o-mini", # TODO: Try "claude-3-5-sonnet-20240620" or other models from our supported model providers. Checkout out our docs for a full list: https://docs.arcade-ai.com/integrations
|
|
user="you@example.com",
|
|
tools=["Github.SetStarred"],
|
|
tool_choice="generate", # TODO: Try "execute" and note any differences
|
|
)
|
|
|
|
return response
|
|
|
|
|
|
if __name__ == "__main__":
|
|
arcade_api_key = os.environ.get(
|
|
"ARCADE_API_KEY"
|
|
) # If you forget your Arcade API key, it is stored at ~/.arcade/credentials.yaml on `arcade login`
|
|
cloud_host = "https://api.arcade-ai.com" + "/v1"
|
|
|
|
openai_client = OpenAI(
|
|
api_key=arcade_api_key,
|
|
base_url=cloud_host, # Alternatively, use http://localhost:9099/v1 if you are running Arcade Engine locally
|
|
)
|
|
|
|
chat_result = call_tool_with_openai(openai_client)
|
|
# If the tool call requires authorization, then wait for the user to authorize and then call the tool again
|
|
if (
|
|
chat_result.choices[0].tool_authorizations
|
|
and chat_result.choices[0].tool_authorizations[0].get("status") == "pending"
|
|
):
|
|
print(chat_result.choices[0].message.content)
|
|
input("After you have authorized, press Enter to continue...")
|
|
chat_result = call_tool_with_openai(openai_client)
|
|
|
|
print(chat_result.choices[0].message.content)
|