Rumah >pembangunan bahagian belakang >Golang >Tulis alatan untuk LLM dengan go - mcp-golang

Tulis alatan untuk LLM dengan go - mcp-golang

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-23 20:48:11219semak imbas

Write tools for LLMs with go - mcp-golang

Kami hanya mcp-golang sumber terbuka!

Beberapa minggu lalu, Anthropic mengeluarkan Model Context Protocol - protokol untuk membenarkan LLM menggunakan alatan dan berinteraksi dengan dunia.

Sdks asas yang ditulis oleh Anthropic adalah untuk Typescript dan python, jadi jika anda mahu menggunakan go, anda tidak bernasib baik.

Dengan mcp-golang anda kini boleh menulis pelayan alat dalam beberapa baris kod sahaja.

Pelayan di bawah membenarkan LLM memahami cuaca di mana-mana lokasi.

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
}

Lihat demo di https://youtu.be/kffLqCgvvdE!

Selamat pengekodan!

Atas ialah kandungan terperinci Tulis alatan untuk LLM dengan go - mcp-golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn