>백엔드 개발 >Golang >go를 사용하여 LLM용 도구 작성 - mcp-golang

go를 사용하여 LLM용 도구 작성 - 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은 LLM이 도구를 사용하고 세상과 상호 작용할 수 있도록 하는 프로토콜인 Model Context Protocol을 출시했습니다.

Anthropic에서 작성한 기본 SDK는 Typescript와 Python용이어서 go를 사용하고 싶다면 운이 없었습니다.

mcp-golang을 사용하면 이제 단 몇 줄의 코드만으로 도구 서버를 작성할 수 있습니다.

아래 서버를 통해 LLM은 모든 위치의 날씨를 이해할 수 있습니다.

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를 사용하여 LLM용 도구 작성 - mcp-golang의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.