クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

Anthropic Claude 3でのTool useについて

Anthropic Claude 3で、VertexAIやBedrockでも、Tool use (Function calling) つかえるようになりました、

https://docs.anthropic.com/en/docs/tool-use

 anthropic 0.28.0 

知りたい地区の天気をLLMに聞くと,locationを返して、Google GenCode API, openweathermap APIで現在の天気を返せるものがサクッと作れるようになりました。

from anthropic import AnthropicVertex
import requests
import json

def main():
    LOCATION = "us-central1"

    client = AnthropicVertex(region=LOCATION, project_id="xxxxxxx")
    response = client.messages.create(
        max_tokens=1024,
        tools=[
        {
            "name": "get_weather",
            "description": "Get the current weather in a given location",
            "input_schema": {
            "type": "object",
            "properties": {
                "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA"
                }
            },
            "required": ["location"]
            }
        }
        ],
        messages=[{"role": "user","content": "柏の天気を教えて?"}],
        model="claude-3-haiku@20240307",
    )
    #  print(message)
    print(response.content[-1].input)

    payload = {'address': response.content[-1].input['location'], 'key': 'xxxxxxxxxxxxxxxx'}
    r = requests.get('https://maps.googleapis.com/maps/api/geocode/json', params=payload)
    # print(r.text['results'][0].geometry.location)
    d=json.loads(r.text)
    loc = d['results'][0]['geometry']['location']
    print(loc)
    # curl "https://api.openweathermap.org/data/3.0/onecall
    payload2 = {'lat': loc['lat'], 'lon': loc['lng'], 'lang': 'ja',  'appid': 'xxxxxxxxxxxxxxxxxx'}
    r2 = requests.get('https://api.openweathermap.org/data/3.0/onecall', params=payload2)
    d2 = json.loads(r2.text)
    print(d2['current']['weather'])
if __name__ == "__main__":
    main()
 {'location': '柏, 千葉'}
{'lat': 35.8675958, 'lng': 139.9757575}
[{'id': 500, 'main': 'Rain', 'description': '小雨', 'icon': '10d'}]

 

コメントは受け付けていません。