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 59)
56async fn basic_completion(client: &Client) -> Result<()> {
57 let builder = client
58 .completions()
59 .builder("gpt-3.5-turbo-instruct")
60 .prompt("Write a tagline for an ice cream shop")
61 .max_tokens(60);
62
63 let response = client.completions().create(builder).await?;
64
65 println!("Prompt: Write a tagline for an ice cream shop");
66 if let Some(choice) = response.choices.first() {
67 println!("Completion: {}", choice.text);
68 println!("Finish reason: {:?}", choice.finish_reason);
69 }
70
71 if let Some(usage) = response.usage {
72 println!(
73 "Tokens used: {} prompt + {} completion = {} total",
74 usage.prompt_tokens, usage.completion_tokens, usage.total_tokens
75 );
76 }
77
78 Ok(())
79}
80
81async fn completion_with_parameters(client: &Client) -> Result<()> {
82 let builder = client
83 .completions()
84 .builder("gpt-3.5-turbo-instruct")
85 .prompt("Explain quantum computing in simple terms:")
86 .max_tokens(100)
87 .temperature(0.7)
88 .top_p(0.9)
89 .frequency_penalty(0.5)
90 .presence_penalty(0.0);
91
92 let response = client.completions().create(builder).await?;
93
94 println!("Parameters:");
95 println!(" Temperature: 0.7");
96 println!(" Top P: 0.9");
97 println!(" Frequency Penalty: 0.5");
98 println!(" Presence Penalty: 0.0");
99 println!();
100
101 if let Some(choice) = response.choices.first() {
102 println!("Completion: {}", choice.text);
103 }
104
105 Ok(())
106}
107
108async fn multiple_completions(client: &Client) -> Result<()> {
109 let builder = client
110 .completions()
111 .builder("gpt-3.5-turbo-instruct")
112 .prompt("Brainstorm three names for a pet cat:")
113 .max_tokens(50)
114 .n(3) // Generate 3 different completions
115 .temperature(0.9); // Higher temperature for more variety
116
117 let response = client.completions().create(builder).await?;
118
119 println!("Generating {} completions:", response.choices.len());
120 for (i, choice) in response.choices.iter().enumerate() {
121 println!(" {}. {}", i + 1, choice.text.trim());
122 }
123
124 Ok(())
125}
126
127async fn completion_with_stop(client: &Client) -> Result<()> {
128 let builder = client
129 .completions()
130 .builder("gpt-3.5-turbo-instruct")
131 .prompt("List three programming languages:\n1.")
132 .max_tokens(100)
133 .temperature(0.0)
134 .add_stop("\n4.") // Stop at the fourth item
135 .add_stop("\n\n"); // Also stop at double newline
136
137 let response = client.completions().create(builder).await?;
138
139 println!("Prompt: List three programming languages:");
140 if let Some(choice) = response.choices.first() {
141 println!("Completion:\n1.{}", choice.text);
142 println!("Stopped because: {:?}", choice.finish_reason);
143 }
144
145 Ok(())
146}
147
148async fn completion_with_suffix(client: &Client) -> Result<()> {
149 // Insert mode: provide text before and after the insertion point
150 let builder = client
151 .completions()
152 .builder("gpt-3.5-turbo-instruct")
153 .prompt("def hello_world():\n print(\"Hello, ")
154 .suffix("\")\n return True")
155 .max_tokens(10)
156 .temperature(0.0);
157
158 let response = client.completions().create(builder).await?;
159
160 println!("Insert mode example:");
161 println!("Before: def hello_world():\\n print(\"Hello, ");
162 if let Some(choice) = response.choices.first() {
163 println!("Inserted: {}", choice.text);
164 }
165 println!("After: \")\\n return True");
166
167 Ok(())
168}
169
170#[allow(dead_code)]
171async fn completion_with_echo(client: &Client) -> Result<()> {
172 let builder = client
173 .completions()
174 .builder("gpt-3.5-turbo-instruct")
175 .prompt("The capital of France is")
176 .max_tokens(10)
177 .echo(true) // Echo back the prompt
178 .temperature(0.0);
179
180 let response = client.completions().create(builder).await?;
181
182 println!("Echo enabled:");
183 if let Some(choice) = response.choices.first() {
184 println!("Full text (prompt + completion): {}", choice.text);
185 }
186
187 Ok(())
188}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 63)
56async fn basic_completion(client: &Client) -> Result<()> {
57 let builder = client
58 .completions()
59 .builder("gpt-3.5-turbo-instruct")
60 .prompt("Write a tagline for an ice cream shop")
61 .max_tokens(60);
62
63 let response = client.completions().create(builder).await?;
64
65 println!("Prompt: Write a tagline for an ice cream shop");
66 if let Some(choice) = response.choices.first() {
67 println!("Completion: {}", choice.text);
68 println!("Finish reason: {:?}", choice.finish_reason);
69 }
70
71 if let Some(usage) = response.usage {
72 println!(
73 "Tokens used: {} prompt + {} completion = {} total",
74 usage.prompt_tokens, usage.completion_tokens, usage.total_tokens
75 );
76 }
77
78 Ok(())
79}
80
81async fn completion_with_parameters(client: &Client) -> Result<()> {
82 let builder = client
83 .completions()
84 .builder("gpt-3.5-turbo-instruct")
85 .prompt("Explain quantum computing in simple terms:")
86 .max_tokens(100)
87 .temperature(0.7)
88 .top_p(0.9)
89 .frequency_penalty(0.5)
90 .presence_penalty(0.0);
91
92 let response = client.completions().create(builder).await?;
93
94 println!("Parameters:");
95 println!(" Temperature: 0.7");
96 println!(" Top P: 0.9");
97 println!(" Frequency Penalty: 0.5");
98 println!(" Presence Penalty: 0.0");
99 println!();
100
101 if let Some(choice) = response.choices.first() {
102 println!("Completion: {}", choice.text);
103 }
104
105 Ok(())
106}
107
108async fn multiple_completions(client: &Client) -> Result<()> {
109 let builder = client
110 .completions()
111 .builder("gpt-3.5-turbo-instruct")
112 .prompt("Brainstorm three names for a pet cat:")
113 .max_tokens(50)
114 .n(3) // Generate 3 different completions
115 .temperature(0.9); // Higher temperature for more variety
116
117 let response = client.completions().create(builder).await?;
118
119 println!("Generating {} completions:", response.choices.len());
120 for (i, choice) in response.choices.iter().enumerate() {
121 println!(" {}. {}", i + 1, choice.text.trim());
122 }
123
124 Ok(())
125}
126
127async fn completion_with_stop(client: &Client) -> Result<()> {
128 let builder = client
129 .completions()
130 .builder("gpt-3.5-turbo-instruct")
131 .prompt("List three programming languages:\n1.")
132 .max_tokens(100)
133 .temperature(0.0)
134 .add_stop("\n4.") // Stop at the fourth item
135 .add_stop("\n\n"); // Also stop at double newline
136
137 let response = client.completions().create(builder).await?;
138
139 println!("Prompt: List three programming languages:");
140 if let Some(choice) = response.choices.first() {
141 println!("Completion:\n1.{}", choice.text);
142 println!("Stopped because: {:?}", choice.finish_reason);
143 }
144
145 Ok(())
146}
147
148async fn completion_with_suffix(client: &Client) -> Result<()> {
149 // Insert mode: provide text before and after the insertion point
150 let builder = client
151 .completions()
152 .builder("gpt-3.5-turbo-instruct")
153 .prompt("def hello_world():\n print(\"Hello, ")
154 .suffix("\")\n return True")
155 .max_tokens(10)
156 .temperature(0.0);
157
158 let response = client.completions().create(builder).await?;
159
160 println!("Insert mode example:");
161 println!("Before: def hello_world():\\n print(\"Hello, ");
162 if let Some(choice) = response.choices.first() {
163 println!("Inserted: {}", choice.text);
164 }
165 println!("After: \")\\n return True");
166
167 Ok(())
168}
169
170#[allow(dead_code)]
171async fn completion_with_echo(client: &Client) -> Result<()> {
172 let builder = client
173 .completions()
174 .builder("gpt-3.5-turbo-instruct")
175 .prompt("The capital of France is")
176 .max_tokens(10)
177 .echo(true) // Echo back the prompt
178 .temperature(0.0);
179
180 let response = client.completions().create(builder).await?;
181
182 println!("Echo enabled:");
183 if let Some(choice) = response.choices.first() {
184 println!("Full text (prompt + completion): {}", choice.text);
185 }
186
187 Ok(())
188}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