pub struct CompletionsClient<'a, T = ()> { /* private fields */ }Expand description
Client for completions API.
Implementations§
Source§impl<T: Default + Send + Sync> CompletionsClient<'_, T>
impl<T: Default + Send + Sync> CompletionsClient<'_, T>
Sourcepub fn builder(&self, model: impl Into<String>) -> CompletionsBuilder
pub fn builder(&self, model: impl Into<String>) -> CompletionsBuilder
Create a completions builder for the specified model.
§Example
ⓘ
use openai_ergonomic::Client;
let client = Client::from_env()?;
let builder = client.completions().builder("gpt-3.5-turbo-instruct");Examples found in repository?
examples/completions.rs (line 57)
54async fn basic_completion(client: &Client) -> Result<()> {
55 let builder = client
56 .completions()
57 .builder("gpt-3.5-turbo-instruct")
58 .prompt("Write a tagline for an ice cream shop")
59 .max_tokens(60);
60
61 let response = client.completions().create(builder).await?;
62
63 println!("Prompt: Write a tagline for an ice cream shop");
64 if let Some(choice) = response.choices.first() {
65 println!("Completion: {}", choice.text);
66 println!("Finish reason: {:?}", choice.finish_reason);
67 }
68
69 if let Some(usage) = response.usage {
70 println!(
71 "Tokens used: {} prompt + {} completion = {} total",
72 usage.prompt_tokens, usage.completion_tokens, usage.total_tokens
73 );
74 }
75
76 Ok(())
77}
78
79async fn completion_with_parameters(client: &Client) -> Result<()> {
80 let builder = client
81 .completions()
82 .builder("gpt-3.5-turbo-instruct")
83 .prompt("Explain quantum computing in simple terms:")
84 .max_tokens(100)
85 .temperature(0.7)
86 .top_p(0.9)
87 .frequency_penalty(0.5)
88 .presence_penalty(0.0);
89
90 let response = client.completions().create(builder).await?;
91
92 println!("Parameters:");
93 println!(" Temperature: 0.7");
94 println!(" Top P: 0.9");
95 println!(" Frequency Penalty: 0.5");
96 println!(" Presence Penalty: 0.0");
97 println!();
98
99 if let Some(choice) = response.choices.first() {
100 println!("Completion: {}", choice.text);
101 }
102
103 Ok(())
104}
105
106async fn multiple_completions(client: &Client) -> Result<()> {
107 let builder = client
108 .completions()
109 .builder("gpt-3.5-turbo-instruct")
110 .prompt("Brainstorm three names for a pet cat:")
111 .max_tokens(50)
112 .n(3) // Generate 3 different completions
113 .temperature(0.9); // Higher temperature for more variety
114
115 let response = client.completions().create(builder).await?;
116
117 println!("Generating {} completions:", response.choices.len());
118 for (i, choice) in response.choices.iter().enumerate() {
119 println!(" {}. {}", i + 1, choice.text.trim());
120 }
121
122 Ok(())
123}
124
125async fn completion_with_stop(client: &Client) -> Result<()> {
126 let builder = client
127 .completions()
128 .builder("gpt-3.5-turbo-instruct")
129 .prompt("List three programming languages:\n1.")
130 .max_tokens(100)
131 .temperature(0.0)
132 .add_stop("\n4.") // Stop at the fourth item
133 .add_stop("\n\n"); // Also stop at double newline
134
135 let response = client.completions().create(builder).await?;
136
137 println!("Prompt: List three programming languages:");
138 if let Some(choice) = response.choices.first() {
139 println!("Completion:\n1.{}", choice.text);
140 println!("Stopped because: {:?}", choice.finish_reason);
141 }
142
143 Ok(())
144}
145
146async fn completion_with_suffix(client: &Client) -> Result<()> {
147 // Insert mode: provide text before and after the insertion point
148 let builder = client
149 .completions()
150 .builder("gpt-3.5-turbo-instruct")
151 .prompt("def hello_world():\n print(\"Hello, ")
152 .suffix("\")\n return True")
153 .max_tokens(10)
154 .temperature(0.0);
155
156 let response = client.completions().create(builder).await?;
157
158 println!("Insert mode example:");
159 println!("Before: def hello_world():\\n print(\"Hello, ");
160 if let Some(choice) = response.choices.first() {
161 println!("Inserted: {}", choice.text);
162 }
163 println!("After: \")\\n return True");
164
165 Ok(())
166}
167
168async fn completion_with_echo(client: &Client) -> Result<()> {
169 let builder = client
170 .completions()
171 .builder("gpt-3.5-turbo-instruct")
172 .prompt("The capital of France is")
173 .max_tokens(10)
174 .echo(true) // Echo back the prompt
175 .temperature(0.0);
176
177 let response = client.completions().create(builder).await?;
178
179 println!("Echo enabled:");
180 if let Some(choice) = response.choices.first() {
181 println!("Full text (prompt + completion): {}", choice.text);
182 }
183
184 Ok(())
185}Sourcepub async fn create(
&self,
builder: CompletionsBuilder,
) -> Result<CreateCompletionResponse>
pub async fn create( &self, builder: CompletionsBuilder, ) -> Result<CreateCompletionResponse>
Execute a completion request.
§Example
ⓘ
use openai_ergonomic::Client;
let client = Client::from_env()?;
let builder = client.completions()
.builder("gpt-3.5-turbo-instruct")
.prompt("Once upon a time")
.max_tokens(50);
let response = client.completions().create(builder).await?;
println!("Completion: {:?}", response.choices);Examples found in repository?
examples/completions.rs (line 61)
54async fn basic_completion(client: &Client) -> Result<()> {
55 let builder = client
56 .completions()
57 .builder("gpt-3.5-turbo-instruct")
58 .prompt("Write a tagline for an ice cream shop")
59 .max_tokens(60);
60
61 let response = client.completions().create(builder).await?;
62
63 println!("Prompt: Write a tagline for an ice cream shop");
64 if let Some(choice) = response.choices.first() {
65 println!("Completion: {}", choice.text);
66 println!("Finish reason: {:?}", choice.finish_reason);
67 }
68
69 if let Some(usage) = response.usage {
70 println!(
71 "Tokens used: {} prompt + {} completion = {} total",
72 usage.prompt_tokens, usage.completion_tokens, usage.total_tokens
73 );
74 }
75
76 Ok(())
77}
78
79async fn completion_with_parameters(client: &Client) -> Result<()> {
80 let builder = client
81 .completions()
82 .builder("gpt-3.5-turbo-instruct")
83 .prompt("Explain quantum computing in simple terms:")
84 .max_tokens(100)
85 .temperature(0.7)
86 .top_p(0.9)
87 .frequency_penalty(0.5)
88 .presence_penalty(0.0);
89
90 let response = client.completions().create(builder).await?;
91
92 println!("Parameters:");
93 println!(" Temperature: 0.7");
94 println!(" Top P: 0.9");
95 println!(" Frequency Penalty: 0.5");
96 println!(" Presence Penalty: 0.0");
97 println!();
98
99 if let Some(choice) = response.choices.first() {
100 println!("Completion: {}", choice.text);
101 }
102
103 Ok(())
104}
105
106async fn multiple_completions(client: &Client) -> Result<()> {
107 let builder = client
108 .completions()
109 .builder("gpt-3.5-turbo-instruct")
110 .prompt("Brainstorm three names for a pet cat:")
111 .max_tokens(50)
112 .n(3) // Generate 3 different completions
113 .temperature(0.9); // Higher temperature for more variety
114
115 let response = client.completions().create(builder).await?;
116
117 println!("Generating {} completions:", response.choices.len());
118 for (i, choice) in response.choices.iter().enumerate() {
119 println!(" {}. {}", i + 1, choice.text.trim());
120 }
121
122 Ok(())
123}
124
125async fn completion_with_stop(client: &Client) -> Result<()> {
126 let builder = client
127 .completions()
128 .builder("gpt-3.5-turbo-instruct")
129 .prompt("List three programming languages:\n1.")
130 .max_tokens(100)
131 .temperature(0.0)
132 .add_stop("\n4.") // Stop at the fourth item
133 .add_stop("\n\n"); // Also stop at double newline
134
135 let response = client.completions().create(builder).await?;
136
137 println!("Prompt: List three programming languages:");
138 if let Some(choice) = response.choices.first() {
139 println!("Completion:\n1.{}", choice.text);
140 println!("Stopped because: {:?}", choice.finish_reason);
141 }
142
143 Ok(())
144}
145
146async fn completion_with_suffix(client: &Client) -> Result<()> {
147 // Insert mode: provide text before and after the insertion point
148 let builder = client
149 .completions()
150 .builder("gpt-3.5-turbo-instruct")
151 .prompt("def hello_world():\n print(\"Hello, ")
152 .suffix("\")\n return True")
153 .max_tokens(10)
154 .temperature(0.0);
155
156 let response = client.completions().create(builder).await?;
157
158 println!("Insert mode example:");
159 println!("Before: def hello_world():\\n print(\"Hello, ");
160 if let Some(choice) = response.choices.first() {
161 println!("Inserted: {}", choice.text);
162 }
163 println!("After: \")\\n return True");
164
165 Ok(())
166}
167
168async fn completion_with_echo(client: &Client) -> Result<()> {
169 let builder = client
170 .completions()
171 .builder("gpt-3.5-turbo-instruct")
172 .prompt("The capital of France is")
173 .max_tokens(10)
174 .echo(true) // Echo back the prompt
175 .temperature(0.0);
176
177 let response = client.completions().create(builder).await?;
178
179 println!("Echo enabled:");
180 if let Some(choice) = response.choices.first() {
181 println!("Full text (prompt + completion): {}", choice.text);
182 }
183
184 Ok(())
185}Trait Implementations§
Source§impl<'a, T: Clone> Clone for CompletionsClient<'a, T>
impl<'a, T: Clone> Clone for CompletionsClient<'a, T>
Source§fn clone(&self) -> CompletionsClient<'a, T>
fn clone(&self) -> CompletionsClient<'a, T>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'a, T: Debug> Debug for CompletionsClient<'a, T>
impl<'a, T: Debug> Debug for CompletionsClient<'a, T>
impl<'a, T: Copy> Copy for CompletionsClient<'a, T>
Auto Trait Implementations§
impl<'a, T> Freeze for CompletionsClient<'a, T>
impl<'a, T = ()> !RefUnwindSafe for CompletionsClient<'a, T>
impl<'a, T> Send for CompletionsClient<'a, T>
impl<'a, T> Sync for CompletionsClient<'a, T>
impl<'a, T> Unpin for CompletionsClient<'a, T>
impl<'a, T = ()> !UnwindSafe for CompletionsClient<'a, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more