gpt4all/gpt4all-bindings/golang
chrisbarrera f8b1069a1c
add min_p sampling parameter (#2014)
Signed-off-by: Christopher Barrera <cb@arda.tx.rr.com>
Co-authored-by: Jared Van Bortel <cebtenzzre@gmail.com>
2024-02-24 17:51:34 -05:00
..
example Adapt code 2023-06-01 10:36:22 -04:00
binding.cpp add min_p sampling parameter (#2014) 2024-02-24 17:51:34 -05:00
binding.h add min_p sampling parameter (#2014) 2024-02-24 17:51:34 -05:00
go.mod Golang bindings initial working version(#534) 2023-05-15 12:45:56 -04:00
go.sum Golang bindings initial working version(#534) 2023-05-15 12:45:56 -04:00
gpt4all_suite_test.go Golang bindings initial working version(#534) 2023-05-15 12:45:56 -04:00
gpt4all_test.go Adapt code 2023-06-01 10:36:22 -04:00
gpt4all.go add min_p sampling parameter (#2014) 2024-02-24 17:51:34 -05:00
Makefile llmodel_c: improve quality of error messages (#1625) 2023-11-07 11:20:14 -05:00
options.go add min_p sampling parameter (#2014) 2024-02-24 17:51:34 -05:00
README.md docs: golang --recurse-submodules (#1720) 2023-12-11 12:58:58 -05:00

GPT4All Golang bindings

The golang bindings have been tested on:

  • MacOS
  • Linux

Usage

import (
	"github.com/nomic-ai/gpt4all/gpt4all-bindings/golang"
)

func main() {
	// Load the model
	model, err := gpt4all.New("model.bin", gpt4all.SetModelType(gpt4all.GPTJType))
	if err != nil {
		panic(err)
	}
	defer model.Free()

	model.SetTokenCallback(func(s string) bool {
		fmt.Print(s)
		return true
	})

	_, err = model.Predict("Here are 4 steps to create a website:", gpt4all.SetTemperature(0.1))
	if err != nil {
		panic(err)
	}
}

Building

In order to use the bindings you will need to build libgpt4all.a:

git clone --recurse-submodules https://github.com/nomic-ai/gpt4all
cd gpt4all/gpt4all-bindings/golang
make libgpt4all.a

To use the bindings in your own software:

  • Import github.com/nomic-ai/gpt4all/gpt4all-bindings/golang;
  • Compile libgpt4all.a (you can use make libgpt4all.a in the bindings/go directory);
  • Link your go binary by setting the environment variables C_INCLUDE_PATH and LIBRARY_PATH to point to the binding.h file directory and libgpt4all.a file directory respectively.
  • Note: you need to have .so/.dynlib/*.dll files of the implementation nearby the binary produced by the binding in order to make this to work

Testing

To run tests, run make test:

git clone https://github.com/nomic-ai/gpt4all
cd gpt4all/gpt4all-bindings/golang
make test