Maison > développement back-end > Golang > Écrire des outils pour les LLM avec go - mcp-golang

Écrire des outils pour les LLM avec go - mcp-golang

Mary-Kate Olsen
Libérer: 2024-12-23 20:48:11
original
227 Les gens l'ont consulté

Write tools for LLMs with go - mcp-golang

Nous venons d'ouvrir mcp-golang !

Il y a quelques semaines, Anthropic a publié Model Context Protocol - un protocole permettant aux LLM d'utiliser des outils et d'interagir avec le monde.

Les SDK de base écrits par Anthropic étaient pour Typescript et Python, donc si vous vouliez utiliser go, vous n'aviez pas de chance.

Avec mcp-golang, vous pouvez désormais écrire des serveurs d'outils en seulement quelques lignes de code.

Le serveur ci-dessous permet à un LLM de comprendre la météo de n'importe quel endroit.

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
}
Copier après la connexion

Découvrez une démo sur https://youtu.be/kffLqCgvvdE !

Bon codage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal