首頁 >後端開發 >Golang >使用 go 為法學碩士編寫工具 - mcp-golang

使用 go 為法學碩士編寫工具 - mcp-golang

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-23 20:48:11189瀏覽

Write tools for LLMs with go - mcp-golang

我們剛剛開源了 mcp-golang!

幾週前,Anthropic 發布了模型上下文協議 - 一個允許法學碩士使用工具並與世界互動的協議。

Anthropic 寫的基礎 sdks 是針對 Typescript 和 python 的,所以如果你想使用 go,那你就不走運了。

使用 mcp-golang,您現在只需幾行程式碼即可在 go 中編寫工具伺服器。

下面的服務器允許法學碩士了解任何地點的天氣。

package main

import (
    "fmt"
    mcp_golang "github.com/metoro-io/mcp-golang"
    "github.com/metoro-io/mcp-golang/transport/stdio"
    "io"
    "net/http"
)

type WeatherArguments struct {
    Longitude float64 `json:"longitude" jsonschema:"required,description=The longitude of the location to get the weather for"`
    Latitude  float64 `json:"latitude" jsonschema:"required,description=The latitude of the location to get the weather for"`
}

// This is explained in the docs at https://mcpgolang.com/tools
func main() {
    done := make(chan struct{})
    server := mcp_golang.NewServer(stdio.NewStdioServerTransport())
    err := server.RegisterTool("get_weather", "Get the weather forecast for temperature, wind speed and relative humidity", func(arguments WeatherArguments) (*mcp_golang.ToolResponse, error) {
        url := fmt.Sprintf("https://api.open-meteo.com/v1/forecast?latitude=%f&longitude=%f&current=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m", arguments.Latitude, arguments.Longitude)
        resp, err := http.Get(url)
        if err != nil {
            return nil, err
        }
        defer resp.Body.Close()
        output, err := io.ReadAll(resp.Body)
        if err != nil {
            return nil, err
        }
        return mcp_golang.NewToolReponse(mcp_golang.NewTextContent(string(output))), nil
    })
    err = server.Serve()
    if err != nil {
        panic(err)
    }
    <-done
}

查看示範:https://youtu.be/kffLqCgvvvdE!

編碼愉快!

以上是使用 go 為法學碩士編寫工具 - mcp-golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn