首页 >后端开发 >Golang >使用 go 为法学硕士编写工具 - mcp-golang

使用 go 为法学硕士编写工具 - mcp-golang

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-23 20:48:11192浏览

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/kffLqCgvvdE!

编码愉快!

以上是使用 go 为法学硕士编写工具 - mcp-golang的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn