https://github.com/atinylittleshell/function-gpt
This is a typescript library that helps handle function calling with OpenAI's ChatGPT API.
https://github.com/atinylittleshell/function-gpt
api chatgpt function-calling gpt openai typescript
Last synced: 29 days ago
JSON representation
This is a typescript library that helps handle function calling with OpenAI's ChatGPT API.
- Host: GitHub
- URL: https://github.com/atinylittleshell/function-gpt
- Owner: atinylittleshell
- License: mit
- Created: 2023-08-16T16:57:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-07T23:56:32.000Z (over 1 year ago)
- Last Synced: 2025-03-14T20:15:31.242Z (about 1 month ago)
- Topics: api, chatgpt, function-calling, gpt, openai, typescript
- Language: TypeScript
- Homepage:
- Size: 166 KB
- Stars: 43
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ChatGPT-repositories - function-gpt - This is a typescript library that helps handle function calling with OpenAI's ChatGPT API. (Openai)
README
# Function-GPT
> This is a typescript library that helps handle [function calling](https://platform.openai.com/docs/guides/gpt/function-calling) with OpenAI.
[](https://www.npmjs.com/package/function-gpt)
[](https://github.com/atinylittleshell/function-gpt/actions/workflows/publish.yml)
[](https://codecov.io/gh/atinylittleshell/function-gpt)
[](https://github.com/atinylittleshell/function-gpt/blob/main/license)- Uses typescript decorators to provide metadata for function calling
- Automatically generate function calling JSON schema from decorated typescript functions
- Automatically call functions based on name and JSON-formatted arguments
- Can be used with OpenAI's Chat Completion API as well as the Assistants API## Example
```typescript
import { gptFunction, gptString, FunctionCallingProvider } from 'function-gpt';// Define the type of the input parameter for functions above.
class BrowseParams {
// Decorate each field with @gptObjectField to provide necessary metadata.
@gptString('url of the web page to browse')
public url!: string;
}// Create your own class that extends FunctionCallingProvider.
class BrowseProvider extends FunctionCallingProvider {
// Define functions that you want to provide to OpenAI for function calling.
// Decorate each function with @gptFunction to provide necessary metadata.
// The function should accept a single parameter that is a typed object.
@gptFunction('make http request to a url and return its html content', BrowseParams)
async browse(params: BrowseParams) {
const response = await fetch(params.url);
return await response.text();
}
}const provider = new BrowseProvider();
const schema = await provider.getSchema();
const result = await provider.handleFunctionCall(
'browse',
JSON.stringify({ url: 'https://www.google.com' }),
);
```## API References
See [API references](./doc/README.md) for more detailed information on how to use the library.
## Installation
```bash
npm install function-gpt --save
# or
yarn add function-gpt
# or
pnpm add function-gpt
```## Contributing
Contributions are welcome! See [CONTRIBUTING.md](./CONTRIBUTING.md) for more info.